継続を使ってフィボナッチ数列を求める
call/ccの使い方はよくわかってないので自分で継続を渡します.
(define (fib n) (fib/cc n (lambda (a b) (+ a b)))) (define (fib/cc n func) (cond ((= n 0) (func 0 0)) ((= n 1) (func 0 1)) (else (func (fib/cc (- n 1) func) (fib/cc (- n 2) func)))))
テスト.
gosh> (map fib (iota 20 0)) (0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181)