Haskellは純粋な遅延評価ではない
Haskell-Cafe MLのこのメールから始まるスレッドが面白かったのでメモ。参考リンクなども多数登場して非常に勉強になりました。
Haskellは非正格なのであって、遅延評価なのではない、という話。純粋に遅延評価であれば、IOが起こるまでは何も評価が起こらないはず。だが、実際はHaskellは非正格だから、表面上、遅延評価と矛盾しない程度に評価は起こっている可能性はあるということ(たぶん)。
もっと勉強しなければ。
参考リンク:
http://en.wikibooks.org/wiki/Haskell/Laziness
http://haskell.org/haskellwiki/Lazy_vs._non-strict
http://www.haskell.org/haskellwiki/Haskell/Lazy_Evaluation
http://www.cacs.louisiana.edu/~mgr/404/burks/foldoc/53/126.htm