Skip to content

Instantly share code, notes, and snippets.

@rsp
Created November 6, 2017 04:30
Show Gist options
  • Save rsp/a7331dbfde44f265dfc175ef49211f1d to your computer and use it in GitHub Desktop.
Save rsp/a7331dbfde44f265dfc175ef49211f1d to your computer and use it in GitHub Desktop.
Language Wars - Church numerals - legacy JavaScript
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);
};
@rsp
Copy link
Author

rsp commented Nov 6, 2017

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment