{開発}{開発記録}{希哲13年3月20日}{知番付け識別子}{Emacs Lisp}{SQL}(6)

{希哲13年3月20日の開発 K#F85E/5B28-815A}

知番付け識別子の応用範囲

ふと,SQL でも と同じ記法で知番付け識別子が使えることに気付く。JavaScript でも使えるはずなので,あと課題なのは Emacs Lispシェルスクリプトくらいだが,Emacs Lisp は説明文の埋め込み機能で多少は補えるし,文脈によって名前が変わらないためさほどの問題ではない。シェルスクリプトでもそこまで入り組んだことはしないため,さほど大きな問題ではない。

μLisp

knu-kno.el で久しぶりに本格的な Emacs Lisp 論組をして,やはり基本的な函数群に難があることを実感した。以前から似たようなことは考えていたが,これまでの経験を踏まえ Emacs Lisp の語彙改良言語計画「μLisp」として再始動することにした。

最初,無接頭子で追加することも考えたが,スコープ解決演算子のような局所変数との衝突を回避する手段が無いため,νS 同様,簡潔な接頭子を導入することにした。一瞬 @ を使うことも脳裏をよぎったが,これは Aejs あってのものであまり Emacs Lisp には相応しくない。

少し悩んで,Synx 駒触れでも採用しているアスタリスクを接頭子として採用することを思いついた。let* や乗算函数での使用例もあり,名前として使えることは恐らく保証されている。特殊な参照を表す記号という意味では C間接参照演算子の用法にも少し似ていて,特殊性は見た目にも分かりやすい。

Emacs Lisp マニュアルの TIPS に「* を使うような変数名を避けるように」という旨の記述があるが,使おうと思えば使えるということでもあるし,「変数名」でさえなければ厳密には規約に抵触しないことになる。

仮に mus.el を用意し,ここで基本的な函数群を書き始めた。

比較演算子をどう表現するかについても少し悩んだが,これは JavaScript の == や === の類をもってきて,型を限定する場合は *s== などとすれば分かりやすく表現出来ることに気付いた。

この日,knu-kno.el で使っていた標準函数群は概ね書き換えることに成功した。

{}