let t = 関数型プログラミング言語ML 2
■ このスレッドは過去ログ倉庫に格納されています
0644デフォルトの名無しさん
NGNG(define (fib n)
(if (< n 2) n
(+ (fib (- n 1))
(fib (- n 2)))))
こういうのを
(define (fib n)
(let inner ((n n)(k identity))
(if (< n 2) (k n)
(inner (- n 1) (lambda(l)
(inner (- n 2) (lambda(r)
(k (+ l r)))))))))
こういう形式(CPS)に書きかえるって事でよいか?
でもこれは、どのみち(< n 2)になるまでクロージャが連なって状態が
増えてくただの問題のたらい回しなわけだから、
先のHaskellの
sum (x:xs) = x + sum xs
はsumに無限の値が入った場合はヒープが枯渇して死ぬ
可能性があるってことだよな?
■ このスレッドは過去ログ倉庫に格納されています