09/02/14 17:13:10
関数は first-class object ではあっても
関数 = 値 ではない、と
―ここで正格評価において
let rec fix f = f (fix f) なる定義で fix g を評価しようとしたら?
必死こいて値を算出しようとしてしまうんだな
で、その結果、>>453 が示すように無限ループに陥る
let rec fix f x = f (fix f) x なる定義で fix g を評価しようとしたら?
これは部分適用だから関数オブジェクトの生成を行うのだな
で、後々、(fix g) y とされたときに値の算出が始まる