31 lines
601 B
JavaScript
31 lines
601 B
JavaScript
|
|
||
|
/* @providesModule Fun */
|
||
|
|
||
|
function eq(x:number,y:number) { return true };
|
||
|
function sub(x:number,y:number) { return 0; }
|
||
|
function mul(x:number,y:number) { return 0; }
|
||
|
|
||
|
function fix(fold) {
|
||
|
var delta = function(delta) {
|
||
|
return fold(
|
||
|
function(x) { var eta = delta(delta); return eta(x); }
|
||
|
);
|
||
|
};
|
||
|
return delta(delta);
|
||
|
}
|
||
|
|
||
|
function mk_factorial() {
|
||
|
return fix(function(factorial) {
|
||
|
return function(n) {
|
||
|
if (eq (n, 1)) { return 1; }
|
||
|
return mul (factorial (sub (n, 1)), n);
|
||
|
};
|
||
|
});
|
||
|
}
|
||
|
|
||
|
|
||
|
var factorial = mk_factorial();
|
||
|
factorial("...");
|
||
|
|
||
|
module.exports = {fn: fix};
|