Sha256: e8e6164e905c1611298139e6c0d54c110ae0c09b794248c5b0110d6f2abc9c33

Contents?: true

Size: 384 Bytes

Versions: 32

Compression:

Stored size: 384 Bytes

Contents

// The Y combinator, applied to the factorial function

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));

Version data entries

32 entries across 26 versions & 5 rubygems

Version Path
jbarnette-johnson-1.0.0.200807291507 vendor/spidermonkey/Y.js
jbarnette-johnson-1.0.0.200808062051 vendor/spidermonkey/Y.js
jbarnette-johnson-1.0.0.200808062111 vendor/spidermonkey/Y.js
jbarnette-johnson-1.0.0.200811251942 vendor/spidermonkey/Y.js
jbarnette-johnson-1.0.0.20081126120511 vendor/spidermonkey/Y.js
jbarnette-johnson-1.0.0.20090127202936 vendor/spidermonkey/Y.js
jbarnette-johnson-1.0.0.20090225110820 vendor/spidermonkey/Y.js
jbarnette-johnson-1.0.0.20090326122910 vendor/spidermonkey/Y.js
jbarnette-johnson-1.0.0.20090326154650 vendor/spidermonkey/Y.js
jbarnette-johnson-1.0.0.20090326161333 vendor/spidermonkey/Y.js
jbarnette-johnson-1.0.0.20090402144841 vendor/spidermonkey/Y.js
jbarnette-johnson-1.0.0.20090402155420 vendor/spidermonkey/Y.js
johnson19-2.0.0.pre3 vendor/tracemonkey/Y.js
pre-johnson-2.0.0 vendor/tracemonkey/Y.js
johnson-2.0.0.pre3 vendor/tracemonkey/Y.js
johnson-2.0.0.pre2 vendor/tracemonkey/Y.js
johnson-2.0.0.pre1 vendor/spidermonkey/Y.js
johnson-2.0.0.pre1 vendor/tracemonkey/Y.js
johnson-2.0.0.pre0 vendor/spidermonkey/Y.js
johnson-2.0.0.pre0 vendor/tracemonkey/Y.js