仕事でhaskellを使いだしてみたよ

ついに仕事(に使う予定)のツールをhaskellで書きだしてみた。その前まではrubyで書いてたツールのリライト+拡張。ま、(コード自体は)僕しか見なくていいからこういうことができるんだけども。
やっぱ静的に型が付くと安心感あるなー。でもって、静的といえども、処理系が型推論してくれるので自明なところにはいちいち型を書く手間がなくて、書いてる感じや見た目は動的な言語のままなのが嬉しい。
それに、コード変更した時にも型推論は威力を発揮する。途中である関数に引数を増やしたり、引数のデータ構造を変更した時、動的な言語ではその変更が影響する範囲を調べるのが面倒だ。型推論ありの処理系だと、残りの関数のうちどれを直さないといけないかはもれなくコンパイラが教えてくれる。勿論、型は同じなのに値の範囲が変わる、とかそういったデータの値に関する変更の時は無力だが、そういうケースにはあんまり遭遇していない。
さらに型推論がテスト代わりになってくれるので、リファクタリングが超やりやすい。haskellのコーディングはコードを推敲する感覚でリファクタリングできる。ざざっとコードを書きあげて期待通りの動作をした後で、ちょっとソースを睨んでみて重複した構造があったらくくりだして…、みたいな。こういう「くくりだし」はソースの構造だけを変化させるものなので、型のチェックさえ通ればほぼ大丈夫。
懸念だったIOモナドにも慣れたようで、依存関係を気にしないといけない関数は全部IOモナドにしといて、mainにIOモナド(を返す関数)を積んでいけばだいたい期待通り動くようになってきた。これで、CGIとかWebアプリとかもhaskellで書き散らせるようになるとrubyから本格的に乗り換えられるかもしれない。
haskell on rails はないのだろうか。WASHってのがそれ相当?うー、Continuation Monadか…。まだ手つけてないな…。わかりやすいモナドカタログが必要だなあ。もなもなモナドの続きを書くか…。