The AST Typing Problem

型付きの抽象構文木ってどうやったらうまく出来るのかという事を考えてまして、こんな記事がありました。

http://lambda-the-ultimate.org/node/4170

Scalaだと、traitとかを使ったらうまく出来るのかなぁ?って思っているのですがどうするのがうまく行くのかと考えてみてます。

普通にシンボルを型としてノードに持たせれば型は扱えるんですけど。

で、抽象構文木の定義自体を型で縛って、このデータ構造に突っ込めば間違いなくバグのない、言語として動作することが保証出来るみたいな感じだと嬉しいのだけど、できないのかなぁっと思ってます。