我承认,我被绕进去了。
// The Y combinator, applied to the factorial function // https://javascriptlint.svn.sourceforge.net/svnroot/javascriptlint/trunk/spidermonkey/src/Y.js function factorial(proc) { return function (n) { return (n <= 1) ? 1 : n * proc(n-1); } } function Y(outer) { function inner(proc) { function apply(arg) { return proc(proc)(arg); } return outer(apply); } return inner(inner); } print("5! is " + Y(factorial)(5)); // expand Y(factorial)(5) inner(inner)(5) factorial(apply)(5) (function (n) { return (n <= 1) ? 1 : n * proc(n-1); })(5) // proc = apply 5 * apply(4) 5 * factorial(apply)(4) 5 * (function (n) { return (n <= 1) ? 1 : n * proc(n-1); })(4) 5 * (4 * apply(3))
2 comments:
我承认,完全看不懂
i am too~~~
Post a Comment