遅延評価とは
「Yコンビネータ」、「ラムダ式」や「カリー化」は、さっぱりわからないけど、「遅延評価」は使えそう。
- λ Calculus - まずは遅延評価から
http://blog.livedoor.jp/dankogai/archives/50996734.html
遅延評価サンプル
var myif = function(_cond, _then, _else){ return _cond() ? _then() : _else(); }; var fact = function(n){ return myif(function(){ return n <= 1 }, function(){ return 1 }, function(){ return n * fact(n-1) }); } fact(10);http://blog.livedoor.jp/dankogai/archives/50996734.html
要は、遅延評価とは、目的の機能を関数(クロージャ)で包み、必要になるまで、処理をしないことかな。
で、遅延評価って一体何がいいの?
http://blog.livedoor.jp/dankogai/archives/50996734.html
ふつうの、先行評価型言語では、条件分岐というのは特別な構文で、関数ではない。理由は今まで見て来た通り。片っ端から評価してたらヤバい場合があるからだ。
ところが、遅延評価型言語では、条件分岐すらただの関数として実現できる。