燈明ブログ

現状は小池啓仁の応援ブログ

遅延評価とは

「Yコンビネータ」、「ラムダ式」や「カリー化」は、さっぱりわからないけど、「遅延評価」は使えそう。

遅延評価サンプル

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