Skip to content

Instantly share code, notes, and snippets.

@yakreved
Created August 13, 2013 07:22
Show Gist options
  • Save yakreved/6218644 to your computer and use it in GitHub Desktop.
Save yakreved/6218644 to your computer and use it in GitHub Desktop.
sicp 2.6
(define zero (lambda (f) (lambda (x) x)))
(define one
(lambda (f) (lambda (x) (f x))))
(define two
(lambda (f) (lambda (x) (f (f x)))))
(define (add-1 n)
(lambda (f) (lambda (x) (f ((n f) x)))))
(define zero??
(lambda (n) ((n (lambda (x) #f)) #t)))
(define (n-1 n)
(lambda (f) (lambda (x) (((n (lambda (g) (lambda (h) (h (g f)))))
(lambda (u) x))
(lambda (u) u)))))
(define (get-number n)
(if (zero?? n)
0
(+ 1 (get-number (n-1 n)))))
(get-number (add-1 zero))
(define (mult m n)
(lambda (f) (n (m f))))
(get-number (mult two (add-1 two)))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment