Gaucheでtraceするまで
dankogaiさんのエントリを見ると、どうやらtraceすれば分かりやすくなりそう。なので書いてある通りにslibをインストールしようとする
cd ~ curl -O http://swissnet.ai.mit.edu/ftpdir/scm/slib3b3.tar.gz cd /usr/local sudo tar zxvf ~/slib3b3.tar.gz
が、
tar: Unrecognized archive format tar: Error exit delayed from previous errors.
というエラーが解凍時に出てきて進めない。ファイルが壊れてるのかな?
何回か試したけどやっぱり出来ないので、こっちのやり方に変更。
まずココからslibをDLして/usr/localにダウンロードファイル(slib-3b3.zip)を置いておく。
で、
cd /usr/local/ unzip slib-3b3.zip cd slib sudo make infoz sudo make install
とやった後にGaucheをリビルドする。ついでにスレッドを使えるように(参照)しておく。
cd Gauche-0.9.2 ./configure --enable-threads=pthreads --enable-multibyte=utf-8 make && make check && sudo make install
これでtraceが使えるはず。
試してみる。
gosh> (use slib) #<undef> gosh> (require 'trace) #t gosh> (define (fact n) (if (<= n 1) 1 (* n (fact (- n 1))))) fact gosh> (fact 10) 3628800 gosh> (trace fact) #<closure (debug:trace-procedure debug:trace-procedure)> gosh> (fact 10) CALL fact 10 CALL fact 9 CALL fact 8 CALL fact 7 CALL fact 6 RETN fact 720 RETN fact 5040 RETN fact 40320 RETN fact 362880 RETN fact 3628800 3628800 gosh> (untrace fact) #<closure fact> gosh> (fact 10) 3628800
できてますねー。