Y コンビネータ(Combinator)を JavaScript で試す
2009年06月03日
SICP(計算機プログラムの構造と解釈)の 問題4.21 にある Y コンビネータ(Combinator)を JavaScript で実装してみる。
デモ:Y Combinator with JavaScript – SICP(計算機プログラムの構造と解釈) 問題4.21
Factorial
Factorial のスクリプトコード
(function (n) { return (function (fact) { return fact(fact, n); })((function (ft, k) { return k == 1 ? 1 : k * ft(ft, k - 1); })); })(10)
Fibonacci
Fibonacci のスクリプトコード
(function (n){ return (function (fib) { return fib(fib, n); })((function (fb, k) { switch (k) { case 0: return 0; case 1: return 1; default: return fb(fb, (k - 1)) + fb(fb, (k - 2)); }; })); })(10)
even? odd?
even? odd? のスクリプトコード
var f = function (x) { return (function (even, odd) { return even(even, odd, x); })((function (ev, od, n) { return n == 0 ? true : od(ev, od, n - 1); }), (function (ev, od, n) { return n == 0 ? false : ev(ev, od, n - 1); })); };
計算機プログラムの構造と解釈
posted with amazlet at 08.11.07
ジェラルド・ジェイ サスマン ジュリー サスマン ハロルド エイブルソン
ピアソンエデュケーション
売り上げランキング: 6542
ピアソンエデュケーション
売り上げランキング: 6542