ステップ実行eval開発中(2)

要は、

((eval `(,lambda (arg) arg) (interaction-environment)) 123)
=> 123

のように、evalに対して、マクロやspecial formの「実体」を渡した時にも、evalがそれをマクロやspecial formとして扱ってくれれば問題は解決するのだが、とりあえずGaucheはそう扱ってはくれなかった。
(そもそも、evalにシンボルでない実体を渡した時の挙動自体がR5RS外のような気はする。しかし未確認。)
ので、自前で展開する必要があると思ったのだが、どうにも大変そうだ。
evalがマクロ類の実体を扱ってくれれば楽なのに……と思い、Gauche本体の方に手を入れる方向もある事に気付いた。
とりあえず、guileは前述の式を与えたところ、自分の望んでいる通りに機能しているので、そういう挙動にしてもいい裏付けは無くはないようだ。
とりあえず今からパッチ書いてみる事にする。
採用されるかは謎。そもそも楽にパッチ書けるのかも謎。