空想犬猫記

※当日記では、犬も猫も空想も扱っておりません。(旧・エト記)

etolisp 進捗 (26) 〜 Packageの実装 (5)

半年以上 塩漬け になっていた package 絡みの問題を解決。なんかもう記憶が定かではないのだが,拙い blog の記述によれば,実行時にシンボル名を解決していたのが問題になっていたらしい。

結局「,」や「,@」を,CL package*1のexportシンボルにして,「,hoge」や「,@hoge」は,それぞれ

,hoge => (, . hoge)
,@hoge => (,@ . hoge)

のように,特殊な cons としてパースすることにした。で「`(back-quote)」の実行時に,目ざとくそういう cons を検出して普通に展開したり,splice 展開したりするという仕様。このやり方だと,ちゃんとパース時のカレントパッケージを使ってシンボルが決定されるようになる。

もともと「,」や「,@」はパーサが単一のシンボルとしてはパースできない仕様で,エラーになる。従って,こういう cons は,この記法でしか作成されないため,別の意図と混同することはないであろうという判断。

実装が簡単で動けばOK。それが etolisp クオリティ。

*1:大元締めのpackage