-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathchurch.js
49 lines (32 loc) · 817 Bytes
/
church.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
//convert a church number to a javascript number
function convert(church_number) {
return church_number(n => n + 1)(0);
}
var one = function(f) { return function(x) { return f(x); }; }
var one = f => x => f(x);
var two = f => x => f(f(x));
//return the next church number after n
/*var succ = function(n) {
return f => x => n(f)(f(x));
}*/
var succ = n => f => x => n(f)(f(x));
var three = succ(two);
var four = succ(three); //f(f(f(f(x))))
var four_again = f => x => f(f(f(f(x))));
function compose(f,g) {
return x => f(g(x));
}
var plus = function(n,m) {
return f => compose(n(f), m(f));
}
var mult = function(n,m) {
return compose(n,m);
}
function exp(n,m) {
return m(n);
}
function factorial(n) {
}
var eight = plus(four,four)
var sixtyfour = mult(eight,eight);
var nine = exp(three,two);