関数型言語の勉強にSICPを読もう - (6) 1章 - 小休止 traceを使えるようにする

dankogaiさんからトラックバック404 Blog Not Found:scheme - traceとslibで助け舟を頂いた。


このように、「知らないとなかなかたどり着けない情報」をご提供いただけることはとても幸せなことだと思います。

slibとtraceの準備

Ubuntuならこんな感じ。

apt-get install slib

goshで requireしてみると・・・。

gosh> (use slib)
#<undef>
gosh> (require 'trace)
*** ERROR: couldn't open output file: "/usr/share/gauche/0.8.4/lib/slibcat"
Stack Trace:
_______________________________________
  0  (call-with-output-file catpath (lambda (op) (define (display* . ar ...
        At line 22 of "/usr/share/slib/mklibcat"
  1  (cons <pathname> extra)
        At line 76 of "/usr/share/slib/require.scm"
  2  (slib:load (in-vicinity (library-vicinity) "mklibcat"))
        At line 141 of "/usr/share/slib/require.scm"
  3  (catalog:get feature)
        At line 200 of "/usr/share/slib/require.scm"

エラーになります。
Gauche:FAQに解決方法が書いてありました。
要はroot権限でuseとrequireを一度実行すればその後は問題なく使えるようになるようです。

traceの使い方

実行をtraceしたい関数の名前を指定して、次にその関数を実行するだけです。

gosh >(trace f)
gosh > (f (list 1 2 3))

これを利用して再帰と反復の違いを理解しようという記事を明日書こうと思います。


※「SICPを読もう」の目次はこちら


計算機プログラムの構造と解釈
Gerald Jay Sussman Julie Sussman Harold Abelson 和田 英一
ピアソンエデュケーション (2000/02)
売り上げランキング: 56,404