psyntax と正規表現リテラルの問題
psyntax で wiki をR6RSライブラリ化していたら正規表現リテラルの問題に行き当たる。
R6RS には正規表現がないので、Mosh のコード中に #/^/ などの正規表現リテラルがあるとエラーとなってしまう。
より具体的には expander.ss の chi-expr で (stx-error e "invalid expression") となる。
正規表現リテラルが入力要素として想定されるどの type にも属していないため else に行きエラーとなっている。
これを直すには self-evaluating? 手続きに regexp? を追加するのがよさそう。ただし本当は regexp は self evaluating ではない。あくまでも psyntax をだますため。
expander.ss に直接 regexp? と追記して psyntax をビルドし直しても途中でエラーになる。
これは regexp? がどこにも import/export されていないからだ。
"error": expander "unbound identifier" (regexp? x)
ふーむ。psyntax-buildscript-mosh.ss に手を入れて (rnrs) に regexp? を突っ込んでみる。
これはつまりブートストラップに使っている psyntax.pp が (rnrs) に regexp? があると知らないのが問題と見た。
鶏と卵の議論状態だな。
続く。