23 hours ago
my attempt to do the exercises in sicp.
Monday, July 7, 2008
sicp exercise 2.6
; Exercise 2.6. In case representing pairs as procedures wasn't mind-boggling enough, consider
; that, in a language that can manipulate procedures, we can get by without numbers (at least
; insofar as nonnegative integers are concerned) by implementing 0 and the operation of adding 1 as
; (define zero (lambda (f) (lambda (x) x)))
; (define (add-1 n)
; (lambda (f) (lambda (x) (f ((n f) x)))))
; This representation is known as Church numerals, after its inventor, Alonzo Church, the logician who
; invented the calculus.
; Define one and two directly (not in terms of zero and add-1). (Hint: Use substitution to evaluate
; (add-1 zero)). Give a direct definition of the addition procedure + (not in terms of repeated
; application of add-1).
(begin
(define zero (lambda (f) (lambda (x) x)))
(define (add-1 n)
(lambda (f) (lambda (x) (f ((n f) x)))))
;answer
(define zero (lambda (f) (lambda(x) x)))
(define one (lambda (f) (lambda(x) (f x))))
(define two (lambda (f) (lambda(x) (f (f x)))))
)
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment