CLでSRFI-40 — #:g1

Posted 2011-12-28 09:10:00 GMT

CLでSRFI、今回は、SRFI-40の「A Library of Streams」です。
CLで遅延ストリームライブラリといえば、Seriesですが、 SRFI-40はSchemeの遅延ストリームライブラリの定番のようです。

動作

(defun fib (n)
  (stream-nth n
   (labels ((lp (n m)
              (stream-delay
               (stream-cons n (lp (+ n m) n)) )))
     (lp 1 0) )))

(fib 100) ;=> 573147844013817084101

移植について

久々に、nil = 空リスト vs #f /= '()に、はまりました。
参考にGaucheも眺めてみましたが、このSRFI-40を含んだutil.streamは充実していて使いやすそうです。

comments powered by Disqus