;; compute the nth Fibonacci number, ;; where n is non-negative (define f (lambda (n) (if (< n 2) n (+ (f (- n 1)) (f (- n 2)))))) ;; compute n! for nonnegative integer n (define factorial (lambda (n) (do ((i 1 (+ i 1)) (fact 1 (* fact i))) ((> i n) fact)))) ; original from concabs p387 (define from-to-do (lambda (start stop body) (if (> start stop) 'done (begin (body start) (from-to-do (+ 1 start) stop body))))) ;; our version using do (define my-from-to-do (lambda (start stop body) (do ((i start (+ i 1))) ((> i stop) 'done) (body i)))) ; original from concabs p416 (define from-to-add (lambda (start end f) (if (> start end) 0 (+ (f start) (from-to-add (+ start 1) end f))))) ;; our version using do (define my-from-to-add (lambda (start end f) (do ((i start (+ i 1)) (sum 0 (+ sum (f i)))) ((> i end) sum))))