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

quasiquote内の、unquoteとunquote-splicingが正常に動作していない事に気付き、しばらくはまった。


(Gaucheの)quasiquoteは、内部のunquote、unquote-splicingを、シンボルでのみ判定しており、その実体が何かという事については気にしていないという事を知った。
unquoteとunquote-splicing自体は、「quasiquote外で使われた」というエラーを出す機能しか持っていないような雰囲気だ(コードを追ってまで確認はしてない)。
(Gaucheのquasiquoteのコードを、前のeval拡張パッチみたいに、実体比較するようなパッチを書こうと思えば書けるような気はするが、そもそもmacroやsyntaxの実体を操作するのはR5RS外かつ凄い沼地だと知ってしまったので、他の手段で解決したい。……そう言いつつ、このステップ実行evalの実装では、macroやsyntaxの実体を思いっきり触ってしまってるが。)
通常の使用では、unquoteを別のシンボルに割り当てて使う、なんて事はどう考えてもやらないだろうが、何故かそんな事になってしまった。


今回はとりあえず、quote系はいじれない仕様です、という事にした。
もし真面目に対応する場合は、自前でquasiquoteの展開を行う必要があるが、そういう事をやり始めると、GaucheScheme処理系を書いてるのとほぼ同じ事になってしまう(そして、既にそういう気配が結構してきている)。
とりあえずgauche.nightに間に合う事が最重要なので、デモアプリの方を優先する。
それでもquoteを拡張したくなった時は、gauche.nightが終わってからにする。
まだプレゼン作成と動画作成も残っている。


どうも、今思うに、ステップ実行evalを作る方針を微妙に間違えたっぽく思えてならない。
もう少し、quick and dirty hackになる筈だったのに……。


三月八日の別イベントの日程はまだ謎のままだ。