Here's how one would define zero and increment function using lambda calculus
 (define zero (lambda (f) (lambda (x) x)))
(define (add-1 n)
(lambda (f) (lambda (x) (f ((n f) x)))))
 (define (add-1 n)
(lambda (f) (lambda (x) (f ((n f) x)))))
- From SICP
 Here zero is a function that takes a function (f) and returns a function which takes an argument (x) and applies f to x, zero times (or do not apply f to x).
 The definition of add-1 can be easily understood by looking at the body of inner lambda expression. The body applies f to x (n+1) times, where n is the parameter.
 So one would be
 (define one (lambda (f) (lambda (x) (f x)))) ; We apply f one time to x
 I'll leave the definition of one as an exercise.:-)
  
2 comments:
You write very well.
Thank you very much :)
Post a Comment