ggc
会社でsicp読書会が開かれておりまして、
生意気にもいそいそとそれに参加させてもらうことになりました。
そんで僕はgaucheをつかいたいんだけど、
gaucheにはtraceっていって、実行をトレースしてくれる関数がない!!
ということで、調べたところ、、、
結城浩のSICP日記
http://sicp.g.hatena.ne.jp/hyuki/20060507/trace
ggc: Gauche Garbage Collection Project
http://homepage.mac.com/skimu/ggc/
soraなりの日々 - fc2 -
http://sora2hs.blog70.fc2.com/blog-entry-310.html
ということで早速ダウンロードしてインストールしてみましょう
$ cd $HOME/tmp $ mv $HOME/Desctop/ggc-rel-0-17.tgz ./ $ tar -xvzf ggc-rel-0-17.tgz $ cd ggc $ cd trace $ sudo make install
と、一気にいきました。
実体は、、、
/usr/local/share/gauche/site/lib
の中の
ggc/debug
にはいることになります。
ちなみにこんな風につかう。
#!/usr/local/bin/gosh ;; -*- coding: utf-8 -*- (use ggc.debug.trace) (define (pascal vir hor) (cond ((= hor 0) 1) ((= vir hor) 1) (else (+ (pascal (- vir 1) (- hor 1)) (pascal (- vir 1) hor))))) ;; main (define (main args) (define v 4) (define h 1) (trace pascal) (pascal v h) 0)
実行するとこんな風に出ます。
0:(pascal 4 1) 1: (pascal 3 0) ->1 1: (pascal 3 1) 2: (pascal 2 0) ->1 2: (pascal 2 1) 3: (pascal 1 0) ->1 3: (pascal 1 1) ->1 ->2 ->3 ->4 ; trace: pascal has been called 7 times.
はー解決よかったよかった。