; Collected Scheme code of Section 11.5 from ; Kenneth C. Louden, Programming Languages ; Principles and Practice 2nd Edition ; Copyright (C) Brooks-Cole/ITP, 2003 ; page 508 (define (p x y) (if x 1 (y))) (p #T (lambda ( ) (/ 1 0))) ; page 509 (define ( p x y) (if x 1 (force y))) (p #T (delay (/ 1 0))) (define (delayed-square x) (* (force x) (force x))) (define (take n L) (if (= n 0 ) '() (cons ( car (force L)) (take (- n 1) (cdr (force L)))))) (define (intlist m n) (if (> m n) '() (cons m (intlist (+ 1 m) n)))) ; page 510 (take 1 (delay (intlist 2 100))) (define (intlist m n) (if (> m n) '() (cons m (delay (intlist (+ 1 m) n))))) (take 1 (delay (intlist 2 100))) ; page 511 (define (flatten L) (cond ((null? L) '()) ((list? L) (append (flatten (car L)) (flatten (cdr L)))) (else (cons L '()) ))) (define (samefringe? L M) (equal? (flatten L) (flatten M)))