素人くさいSICP読書会

素人くさいSICP読書会に参加し始めた.

いま4章のLISPインタプリタのところ,4.2.2 遅延評価とメモ化を実装した

メモ化しておけばfibonacciを

  (define (fib x) (if (< x 2) 1 (+ (fib (- x 1))  (fib (- x 2)) ) )  )

みたいなナイーブな実装で書いてもちゃんと高速に動く...はずだが,なんか私が書いたものだけちゃんとメモ化できてなかったので,まさにfibonacci的な遅さになっていった.ダウンロードしてきた実装まるぱくりではいかんようだ.

(fib 5)
=>8
cpu time: 47 real time: 16 gc time: 0
(fib 10)
=>89
cpu time: 266 real time: 250 gc time: 0
(fib 15)
=>987
cpu time: 2812 real time: 2812 gc time: 0
(fib 20)
=>10946
cpu time: 31516 real time: 58484 gc time: 406
(fib 25)

IT系ニュースサイトにSchemeの記事をぜひ

帰りがけに参加者とお話.日経BPの記者の方だった.さすがに普段Schemeを仕事で使うことはないらしい....と思っていたけど,Haskellの記事もあるから,そのうちSchemeの記事もぜひのっけてもらいたいものだ.