Q: elispに名前空間がないのはなぜですか?どのようにして取得できますか?
Elispには、グローバル以外の名前空間はありません。これにより、すべてのグローバル関数、変数、および定数に一意のプレフィックスを付けるというコーディング規則が生まれました。
迷惑な要因は別として、1)増え続けるすばらしいライブラリとパッケージ、2)プレフィックスの規則を尊重しないレガシー関数と変数の継続的な存在、または使用できる適切なプレフィックスオプションが実際にはないほど十分に特異です。また、(からcl
への移行のようにcl-lib
)古いコードを合理化しようとする定期的な試行は、重要な作業です。(クリーンアップはうれしいですが、のように入力するたびに涙を流しcl-find
ます)。
数十年使用してもelispにまだ名前空間がないのかどうかを調べてみましたが、適度な収穫には少し驚いていました。名前空間上のwikiページはかなり短いです。 Nic Ferrierはこの問題を少し長めに処理しており、emacs-develにもかなり最近のスレッドがあります。マクロを使用して名前空間を実装する可能性を議論する2010年の古いStack Overflowスレッドがあります。マクロアプローチの別の例はここで見つけることができます。少なくともいくつかの実装があります(こことここ、後者の説明はこちら)そこにありますが、彼らはここ数年あまり活動していませんし、私はそれらを使用するライブラリに出くわしていません。
名前空間の追加が簡単であれば、既に行われていると思います。そう:
- elispに名前空間を追加するための技術的な障壁は何ですか?
- 名前空間を追加すると、既存のコードの多くが壊れますか?
- この機能は、elisp(インタープリター自体の変更)に対して有機的である必要がありますか、それとも実際にマクロを介して構築できますか?