-
Notifications
You must be signed in to change notification settings - Fork 0
/
Church.rkt
68 lines (54 loc) · 1.15 KB
/
Church.rkt
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
(define zero (lambda (f) (lambda (x) x)))
(define (add-1 n)
(lambda (f) (lambda (x) (f ((n f) x)))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(add-1 zero)
((lambda (f) (lambda (x) (f ((n f) x)))) (lambda (f) (lambda (x) x)))
(lambda (x) ((lambda (f) (lambda (x) x)) ((n (lambda (f) (lambda (x) x))) x)))
(add-1 (lambda (f)
(lambda (x)
x)))
((lambda (n)
(lambda (f)
(lambda (x)
(f ((n f) x)))))
(lambda (f)
(lambda (x)
x)))
(lambda (f)
(lambda (x)
(f (
( (lambda (f)
(lambda (x)
x))
f)
x))))
(lambda (f)
(lambda (x)
(f x)))
(define one
(lambda (f)
(lambda (x)
(f x))))
(define two
(lambda (f)
(lambda (x)
(f (f x)))))
(define zero
(lambda (f)
(lambda (x) x)))
;;;;;;;;;;;;;;;;;;;;;;
(define three
(lambda (f)
(lambda (x)
(f (f (f x))))))
(define four
(lambda (f)
(lambda (x)
(f (f (f (f x)))))))
(define (+ m n)
(lambda (m)
(lambda (n)
(lambda (f)
(lambda (x)
(m f (n f x)))))))