第2章で気付いた点・残しておきたい内容をここに書いています。
Gaucheでのnil(2007/1/27)
本書で空のリストを表す'nil'は、Gaucheでは'()'になっている。
intelMacでGauche-gl 0.4.1をインストールするには(2007/5/13)
Gauche-gl 0.4.1をintelMacでインストールしようとしても、次のようなエラーが出て失敗してしまう。
| $ sudo port install gauche-gl gauche-gl.c:421: error: 'GLUtriangulatorObj' undeclared (first use in this function) &be() :(以下いろいろなエラー) |
いろいろと調べてみたところ、Gauche-devel-jpで次の2つの記事を見つけた。
- ./configure.inの71 行めで"powerpc-apple-darwin*)"を"*-apple-darwin*)"に変更(リンク)
- ./configure後にMakefileでCFLAGS,LIBS,glut_LIBS設定を変更(リンク)
実施してみたところ、無事にインストール成功。これ、将来のリリースでは修正されるのだろうか。
スタックトレースを出力する方法
バックトレースを出力する方法でいつも悩んでいたので、ググって調べてみた。そうしたら結城浩氏のSICPサイトで説明があって、僕も簡単に利用できるようになったので紹介。
- まずhttp://homepage.mac.com/skimu/ggc/からggc-rel-0-17.tgzをダウンロード
- 展開したファイルに「trace」というフォルダがあるので移動
- ここでmake。Macだとsudoを付けないとインストール先フォルダ(/opt/local/share/gauche/site。なければ自動的に作成されます)へのアクセス権がなくて駄目だった
これだけです。使うときは
gosh> (use ggc.debug.trace)
#<undef>
gosh> (untrace)
()
gosh> (trace partial-tree)
#<closure #f>
gosh> (list->tree '(1 2 3))
0:(partial-tree (1 2 3) 3)
1: (partial-tree (1 2 3) 1)
2: (partial-tree (1 2 3) 0)
->(() 1 2 3)
2: (partial-tree (2 3) 0)
->(() 2 3)
->((1 () ()) 2 3)
1: (partial-tree (3) 1)
2: (partial-tree (3) 0)
->(() 3)
2: (partial-tree () 0)
->(())
->((3 () ()))
->((2 (1 () ()) (3 () ())))
; trace: partial-tree has been called 7 times.
(2 (1 () ()) (3 () ()))
gosh>
とすればオーケー。ちなみにggcの他のファイルは必要ありません。traceフォルダもインストール後はコピーされているので削除可です。
ただ、この手続きは同時に1つの手続きしかトレースできないみたい。なぜだろう?
