Created
November 6, 2017 04:30
-
-
Save rsp/a7331dbfde44f265dfc175ef49211f1d to your computer and use it in GitHub Desktop.
Language Wars - Church numerals - legacy JavaScript
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var suc = function (a) { | |
return function (b) { | |
return function (c) { | |
return b(a(b)(c)); | |
}; | |
}; | |
}; | |
var add = function (a) { | |
return function (b) { | |
return function (c) { | |
return function (d) { | |
return a(c)(b(c)(d)); | |
}; | |
}; | |
}; | |
}; | |
var mul = function (a) { | |
return function (b) { | |
return function (c) { | |
return a(b(c)); | |
}; | |
}; | |
}; | |
var exp = function (a) { | |
return function (b) { | |
return b(a); | |
}; | |
}; | |
var pre = function (a) { | |
return function (b) { | |
return function (c) { | |
return a(function (d) { | |
return function (e) { | |
return e(d(b)); | |
}; | |
})(function (f) { | |
return c; | |
})(function (g) { | |
return g; | |
}); | |
}; | |
}; | |
}; | |
var sub = function (a) { | |
return function (b) { | |
return b(pre)(a); | |
}; | |
}; | |
var ntc = function (n) { | |
return n > 0 ? function (a) { | |
return function (b) { | |
return a(ntc(n - 1)(a)(b)) | |
}; | |
} : function (a) { | |
return function (b) { | |
return b; | |
}; | |
}; | |
}; | |
var ctn = function (a) { | |
return a(function (x) { | |
return x + 1; | |
})(0); | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
More info: https://github.com/rsp/languagewars-churchnumerals-js