Saturday 29 October 2005

Haskell



昨日は Haskellユーザっていう京大の学部生とかと少し話しました。あの手の言語は嫌いじゃないです。型推論は便利だし。



なんだけど「Haskellで書くと型さえ合わせれば、あとはバグ無しに動く」、お兄さん、それは青すぎる意見だよ。何故かって言うと、プログラミングって、必ずメタなインタプリタ的なものを書かないといけなくて、その部分には型理論とかがおよばなないから。とか言ったら「書いたことあるんですか」みたいなこと言われたけど、君がそれ言うのは10年早いよ。



例えば状態遷移とかオブジェクトの配置とか、あるいはグラフの処理とかが、そんなメタな構造になるわけ。そういう多層的な構造の各段階で「プログラムの正しさ」に対応するものがあるわけ。



それを一階に展開することは可能だし、そうすれば綺麗に書けるわけなんだけど、特に型付けが強い言語だと、柔軟性と相反することが多い。



そういえば、Prologって強制的に一階に展開させられていて、仕方ないので「一段、コンパイラをはさんで」みたいなことを良くやってました。KL/1とかGHCになると、Logic Programming とはまったく関係なく、Stream 上の並列計算になっちゃってたしなぁ。



いや、そんなことないんだってな意見を募集します。

No comments: