2016/01/19
継続を使ってフィボナッチ数列を求める
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)