summaryrefslogtreecommitdiff
path: root/coding-exercises/2/6.rkt
blob: 84491042b6a7118d2d231c4fa42a407e83b82407 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#lang racket
(define zero (lambda (f) (lambda (x) x)))
(define (add-1 n) (lambda (f) (lambda (x) (f ((n f) x)))))

(define one (lambda (f) (lambda (x) (f x))))
(define two (lambda (f) (lambda (x) (f (f x)))))

(define (add-church f g)
  (lambda (h) (lambda (x) ((g h) ((f h) x)))))

(define (print)
    (println (((add-1 zero) inc) 1))
    (println ((one inc) 1))

    (newline)
    (println (((add-1 (add-1 zero)) inc) 1))
    (println ((two inc) 1))

    (newline)
    (println (((add-church one two) inc) 1)))
    
(print)