{開発}{開発記録}{知番}{閃き}{希哲13年3月17日}{知番付け}{}(7)

{希哲13年3月17日の開発 K#F85E/4686-895D}

における名前,シンボル,ライブラリ……この頃そんなことをよく考えていたせいか,ふと,かねてからの課題であった識別子知番付けについて,名前に何らかの方法で知番を付加して,換配時,あるいは選り手デルン上の知名と同期するという手法を閃く。

識別子への知番付けについては,デルン初期には識別子そのものを知番にして,選り手上で名前に見せかけるという構想があったが,これを簡単に実現しようと思うと,名前の整合性を保つために一旦名前に変換して換配し,知番でまた換配する必要があることに気付き暗礁に乗り上げていた。これをしないと,例えば,知番が違えば名前が同じ識別子が矛盾する場所にあっても正しいという一見奇妙な交度が出来てしまうことになる。識別子そのものを知番にすることに拘っていたのは,シンボルを知番として参照出来るようにすることで換配済みのバイナリとの整合性を容易に保てるだろうという目論見があったからだが,いずれにせよ,これに対応した選り手が無ければ話にならないなど課題が多すぎて現実的ではなかった。

今回の閃きは,その拘りを捨て,名前の付加情報として知番を使うことで現実的かつ実用上十分な便益が得られることに気付いたことだった。すでにこれに近い番込めという実験はしていて,デルン上の文章では長く実践してきたことでもあり,個人的に理解しやすく,実装の見通しも容易についた。KNEST が未整備のため自動同期の実現までは時間がかかりそうだが,それでも十分高機能な込め言として使えるというのも大きかった。

最初,どう知番を付けるかについては迷ったが,すぐに C 系では柔軟な込め言を利用すればいいことに気付いた。選り手上でどう省略するかについても,最初は下線などを利用することを考えたが,かえってごちゃごちゃしそうなので簡潔で直感的でもある # を末尾に付ける方法を考えた。とりあえずは,知番(K#XXXX)を書いた C 式の複数行込め言を任意の識別子に空白を置かずに隣接させ,これを「知番識別子」(knumbered identifier)と呼ぶことにした。

これを扱うための機能を一通り実装するため knu-kno.el を書き始めた。

省略表示の実装については outline-mode 等を参考にしたが,これがきっかけで outline-minor-mode を思い出し,あまり隙間のない今のキーバインド体系にどう組み込むか悩み始めた。