selflearn @ ウィキ

メモ(第2章)

最終更新:

kato

- view
メンバー限定 登録/ログイン
第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サイトで説明があって、僕も簡単に利用できるようになったので紹介。

  1. まずhttp://homepage.mac.com/skimu/ggc/からggc-rel-0-17.tgzをダウンロード
  2. 展開したファイルに「trace」というフォルダがあるので移動
  3. ここで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つの手続きしかトレースできないみたい。なぜだろう?

タグ:

SICP scheme
記事メニュー
目安箱バナー