おまけ
上の方法だと,yukobaさんのコメントで貼られてたClean入門の「不要な評価をしない」であった,正格言語では処理が止まらない
f a = f (a + 1) g a b = a Start = g (1 + 1) (f 1)
に対しても
var f = function(a){ return function(){ return f(a+1).force(); } } var g = function(a, b){ return function(){ return a.force(); } } alert(g(1+1,f(1)).force());
では,処理が止まって,2が返ってきます.
これでいいの?