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