ScalaConfのHackathonに行ってきました。
結構黙々とコンパイラを作ってました。
話したい人は話してくださいとの事だったので、せっかくなので現状作っている言語の
ソースをざざっと、話してきました。
id:kmizu さんに以下のように書き換えると短くなると指摘してもらいました。
case class EOp(op:String) { def apply(t:T, a:E, b:E):EBin = { EBin(t, op, a, b) } } object EAdd extends EOp("add") object ESub extends EOp("sub")
だらだらしてた所がスッキリと短くなりました。ありがとうございました。
完全じゃないけど、プリミティブな型の暗黙的型変換とか、
パーサコンビネータ使って、パーサ書いてみたり、
変数定義時は型書かなくてよくなったりしました。
かなり、まともになって来てるので楽しいです。
そして何より、ソースコードは美しく分かりやすいはずです。
自分で書いたから、全容を把握出来ているだけだって話もあるかもしれないのだけどw