Concurrent Clean : 一意型

[id:syd_syd:20070623:p1]
あの記事は、勉強しながら書いたので、いろいろとまずいところがあって、いつか書き直さなければいけないと思っているのですが・・・(申し訳ない)

しかし,(いまの私の理解では)さらにCleanでは意図した順序で副作用を並べるために,遅延評価と正格評価を駆使しなければいけないように見える。Haskellerからみてもかなり頭を使う感じだけれど,これも慣れで(というか,何かしらのconventionを身につけることで)なんとかなるのかな。

これは、リソースにアクセスする関数だけ、ハンドルを正格評価してあげれば、あとのところはどういう評価順にしても、リソースへのアクセスは意図した順序でアクセスされるので、ライブラリの方がちゃんとしていればとくに問題はないと思います。遅延IOのようなのをつくるには少し考える必要がありますが(参考 [id:lethevert:20070423:p3])、これも多分少しのパターンを覚えれば大丈夫なはず。
それよりも、一意型は型エラーがほとんど人間の読めるものではないという問題があって・・・。一意型と非一意型は型変換ルールがあるのですが、複雑な型でこの型変換ルールに関係するところで型エラーを起こすと、本当に大変なことになります。とはいっても、これは多分致命的なことにはならないと考えているのですが、なぜかという話になると長めの記事が数本書けてしまうという。