遅延評価

ふつけるの 5 章。遅延評価。
遅延評価かあ。慣れてなかったらどう評価されるのかまるでわからない。むしろわからないからいいのかもしれない。それが宣言的に書けるっていうことか。多分違う。
前に Packrat Parsing を Ruby で書いてみたけど、遅延評価を使うかわりにインスタンス変数への代入を使った。遅延評価による再帰的なデータは破壊的操作で代用できる、こともある。逆に、RubyOCaml では破壊的操作が必要な処理も遅延評価があれば OK ということもあるということだな。まあ全て相互に置き換えられるわけでもないからモナドとかいろいろ用意されてるわけで…。
OCaml にも Lazy モジュールがあるが、lazy やら force やらを書かないといけなくてやたら面倒なことになる。Haskell の遅延評価は、遅延評価がデフォルトであるという点が重要なのだろう。
まあ、遅延評価も正格評価も一長一短だよねー。とまとめてみる。けどやっぱり俺は OCaml のほうが好きかもしれない。副作用大好き。ref が好きだ。mutable なフィールドが好きだ。array が好きだ。Obj.set_field が好きだ。いや、最後のは違うか。

今日はここまで。ふつける読んでないじゃんっていう。