Gauche

Corner case 地獄その2

…と思ったけど (もっと大きな test の一部だったので)、どうもただの gauche の…バグ? でもないのか。やっぱりバグと判断したので Wiliki に移動。固定 link 機能が欲しいな。

debug-print

どの出力がどの expression のどの評価 instance に対応するのか default では非常にわかりにくいから改造。file:line 情報を出すにはもう一つ下の interface を使うことになりそう。まあとりあえずこれでいいか。 しかし何でもアリだな syntactic closure …

pretty-print が無い…orz ;; 名前が違うのかしら そういう状況か。なるほど。ていうか slib ぐらい調べりゃよかった。

unwrap-syntax が足りてない?

いくらでも corner case が出てくる。怖や怖や… gosh> (define-syntax macro (syntax-rules () ((_) #(b)))) #<undef> gosh> (eq? 'b (vector-ref (macro) 0)) #fあれ? っていうか vector って quote しないといけないのか。変すぎorz</undef>

原因ハケーソ!(・∀・) (letrec ((map-ident (lambda (str) (canonicalize str))) (regexp-fold (lambda (exp) exp)) (canonicalize (lambda (fun) (regexp-fold fun)))) ;; empty )map-ident が pass2 を通るとき、その body が (canonicalize str) -> (re…

っていうか え? $CONST? てことは…何? 直接の原因は見つかったようで。 思わずこっちで返信したくなる。嫌だなあこの guest との非対称性。 [やっぱり comment 欄で返信]

もういい。 不毛なだけだからもうヤメ。たまたま VCS が意味を成してない時期に紛れ込んだ bug を踏んだみたいで運が悪かったという方向で。cvs の操作も (正しく使えてるのか) よくわからんし。不確定要素多すぎ。 その2 CVS の使い方がいけないらしい。04/…

その4 う、gauche-05 がやっぱり build できてない。 何か %export-all の引数の個数が違うとか。gauche-04 でやってみると今度は getter-with-setter が見えないんだと。しょうがない、ちょっと日付を変えてみよう。…っていうか本来 log 見てやるもんですよ…

その3 せっかく CVS 版が build できたので、revision を遡って出現時点を特定しようと試みる。Build できない。make が失敗する! 何でよ!? ちょっと source を修正して再挑戦。また失敗。失敗した部分を手直しして再挑戦。また失敗。…… [二時間経過]GCC 4 …

その1 HACKING 読んでませんでしたごめんなさいorzそんなわけで普通にやって普通に CVS 版の build 成功。

Debug 中

その8 うーむ、よくわからない。Compiler の構造が。というか #?= の仕掛け方が。何か build に失敗する。どっかで install file 自動生成の邪魔になってるのかな。今日はもう寝よ。明日はちょっと弄れなさそうだなあ…まあなるようになる。 その7 だらだら読…

CDR-coding と歴史

結局 30 年前の特許なのでとっくに期限切れてるみたい。 しかし、Gauche, Guile, Scheme48 どれを読んでも CDR-coding とか unrolled linked list みたいな圧縮表現使ってないなぁ。Gauche は Boehm GC と組み合わせるのが (performance-wise に) 難しそうだ…

Scheme scripting

amb てこういう使い方するもんなんだろうか。それ専用の (効率的な) 関数がありそうだけど、見当たらないし。assert っていうのは SICP でいう require。 (guard (exc ((eq? exc 'no-solution) #t)) (let ((type (amb "Syntax" "Procedure")) (args (amb "Fi…