符単語,extend
途中で終了。
tp.h を追加し tp_ を移動するついでに,xtd+.h に書いてある C_ や non_C_ などのテンプレートも tp.h に移動することにした。
改めてみると,Cμ で一番古い譜類なだけあって xtd+.h の混沌ぶりも凄い。なぜか GD 関係の交度まである。少しずつ整理を進めたい。
ついでに,これまで適当にしていたマクロの命名規則についても整理。
いつか忘れたが,Cμ 関係のマクロは _XTD_ のようにアンダースコアで囲む,という規則を採用したことがありそのままだったが,これは XTD と単純化することにした。
Cμ はあくまでも独自言語であるため C や C++ の規則に従う必要は必ずしもないが,std,xtd はもはや Cμ では自明の予約語であり,あえて特殊な記号を付ける必要もない。むしろこちらを予約してしまった方が良いだろう。
また,先日廃止するつもりで止めた std 頭譜(std+.h)について,std/string のように C++ 標準頭譜を絡包することを本格的に検討し始めた。以前から脳裏をよぎっていたことではあるが,例えばマクロで読み込み状況を確認出来るようにするなど,応用の可能性がある。これは必要に迫られた時に実装する。
希哲12年4月6日,xtd.Hu から xtd.h へ拡張子変更。
先頭には「std.Hu」(xtd.Hu ではなく),「0.3x」,「Cu 標準蔕」,「2014-12-02」といったかなり古い情報が書かれたまま放置されていた。希哲12年4月12日,これを譜名と知番のみに単純化。また,#include の .Hu を .h に変更。
希哲12年4月17日,let() を追加。
希哲13年3月24日,これに近い用法に javax があることに気付く。
希哲13年5月1日,例外拡張子を採用し xtd..h へ改称。
希哲14年1月7日,例外拡張子を廃止,xtd..h から xtd.h へ戻したが,模従(xtd.DB など)に紛れてしまうという問題に気付き,付加頭譜を応用して xtd+.h に再変更。
昨日考案した ライブラリの分割方式を適用する前に,今後の開発の基礎になることでもあるため,Cμ の基本的なライブラリ,ヘッダー,名前空間の構成について,一日かけて熟考した。
まず,新しい着想としては,魔法引括に std.h を含むことで,非標準ライブラリの読み込み前に std.h の引括をしなくて済むことに気付いた。これは有用なので採用は確定している。
ここ最近考えるようになった xtd 表記の廃止と std 表記への統合は悩みどころだった。例えば入門者用に拡張標準のような予備知識を必要とする概念を最初から導入したくない,というのも大きかったが,説明可能性を重視すると,どうしてもライブラリ,ヘッダー,名前空間での整合性を取りたかった。このうち特に難しかったのは名前空間の問題だった。std に統合するなら,Cμ 標準 も std:: で参照出来た方が良い。この場合,基礎標準との切り分けをどうするかが難しい。
例えば何らかの名前空間を作って,use ns を使って :std:: に統合する,擬似的に std:: に見えるようにするなどの実験はいくつかしたが,名前解決が出来ない違了が出るなどしてあまり上手くいかなかった。トリッキーなことは見通しを悪くし厄介な問題を招く可能性があり避けたいこともあり,この方向は諦めた。直接 ::std:: に入れてしまうことも考えたが,基礎標準との相互運用性を考えると避けたい。さらに,基礎標準のヘッダーを引括する際,何らかの名前空間で囲って隔離するということも考えたが,これも違了で上手くいかなかった。いずれにせよ,ヘッダーの実装によっておかしくなる可能性があるので得策ではない。
結論として,:std:: はそのままにしておくことにした。
::std:: 以外の名前空間を考えると,そもそも std で統一するという方針が怪しくなってきて,kn や mus といった別の表現で統一することまで考えたが,これはこれであまり美しく感じられない。そもそもグローバル空間に展開させているので,:: でいいのではないかとも考えたが,特に C ライブラリを扱うことを考えた時に,やはり場合によって固有の名前空間は欲しい。
こうして散々考えた結果,xtd は分かりやすくて悪くないという結論に至った。基礎標準・拡張標準という Cμ の説明体系にも整合しているし,結局これが一番簡潔で分かりやすく,:xtd:: の実装も単純でよく切り分けられている。ライブラリ(libxtd.so),ヘッダー(xtd.h),名前空間で何ら問題なく整合化出来る。自分で思っていたよりよく考えられた命名だった。
結局,ドット区切りのライブラリ分割,魔法引括による std.h の自動読み込み以外はほぼ現状維持となったが,何よりの収穫は Cμ の基本方針について迷いが無くなり,確信が深まったことだった。これで気兼ねなく作業を続けることが出来る。
他に,引括や名前空間などについて熟考したことで,use ns を例えば + 記号や w/(with の意)を使って引括時に指定出来るようにする,拡張標準のヘッダーは「少なくとも一つ書けばいい」という説明の仕方にする(これまでは必ず xtd を書くことを推奨するつもりだった),という案が出来た。これらは今後検討していく。