Jun Inoue
jun.l****@gmail*****
2006年 4月 8日 (土) 13:07:46 JST
Hygienic macro の code を commit しましたが、見てわかる通りまだ何箇所 か腐ってます (identifier の比較とか debug print とか)。 自分では expand-macro で展開を確認しながら scm_format を埋めて debug してるんですが、sscm では出力が unwrap-syntax されてしまうので scope 周りの debug が不便です。原因はguard_body() で返り値に delay() を被せ てるからですが、どう直すべきかわかりません。というか guard 周りの code はどうもよくわからない & わかるまで粘る気になるような外見でないので、 書いた人に見てほしいんですが… > ヤマケンさん そもそもこんなにいっぱい layer 要りますか? scm_s_srfi34_guard(catch, body) { push_handler (make_handler (catch)); ret = scm_s_begin (body); pop_handler (); return ret; } ではダメなんでしょうか。(dynamic-wind の側で PROCEDUREP() か CONSP() かければ make_handler() も要らないような) どうしても lambda で包む必要があるなら unwrap-syntax しない quote を作 ることになりますが、それを採用したときには scheme code から見えないよ うに追加しないとまずいので注意。