課題としては単純な幾何を表現する言語の実装である。点、線、線分を各々インターセクション(積?)をとり、結果を表示するというミニ言語で、たとえば、

Intersect(Line(1,2),Point(1,3)) の結果は Point(1,3)となるような。ここでLineの第1パラメータは傾き、第2パラメータは切片である。Pointはx座標とy座標。

SMLのコードはほとんど実装済みで残りをちょろっとかくだけだったので比較的簡単であった。Rubyは結構なやんだが、それはダブルディスパッチを多用するため、どこからどこが呼ばれてるんだっけ?とむやみに書いていたらわからなくなったから。表を書いたらスッキリ整理できてちゃんとできた。ような気がする。

ここで勉強するとコードが綺麗に書けるようになる、その練習にもなるから面白いなあ。