2 days ago

my attempt to do the exercises in sicp.

## Saturday, July 5, 2008

### sicp exercise 1.6

; Exercise 1.6. Alyssa P. Hacker doesn't see why if needs to be provided as a special form. ``Why can't I

; just define it as an ordinary procedure in terms of cond?'' she asks. Alyssa's friend Eva Lu Ator claims

; this can indeed be done, and she defines a new version of if:

;

; (define (new-if predicate then-clause else-clause)

; (cond (predicate then-clause)

; (else else-clause)))

;

; Eva demonstrates the program for Alyssa:

;

; (new-if (= 2 3) 0 5)

; 5

;

; (new-if (= 1 1) 0 5)

; 0

;

; Delighted, Alyssa uses new-if to rewrite the square-root program:

;

; (define (sqrt-iter guess x)

; (new-if (good-enough? guess x)

; guess

; (sqrt-iter (improve guess x)

; x)))

;

; What happens when Alyssa attempts to use this to compute square roots? Explain.

; Answer:

; since the new-if is a procedure, the if-clause and then-clause are evaluated at the time of procedure call

; so the sqrt-iter will be called infinite times in applicative order evaluation.

Subscribe to:
Post Comments (Atom)

## No comments:

Post a Comment