generated at
正格評価
strict evaluation
積極評価先行評価eager evaluation
関数呼び出しの際に、bodyより先に引数を評価する
関数の引数が本体で使われるかどうかに関係なく常に評価される
最悪時データ構造は書けるが、償却データ構造は書けない




Haskellでは $ の代わりに、$!を使えば正格評価になる
e.g. 以下のような関数 two を考える
hs
two = const 2
two $! undefined とすれば、結果は undefined になる
Haskellは、 $! を使っても弱頭部正規形を使うので、
take 5 $! [1..] はちゃんと停止する ref