srfi.258
- インターンされないシンボル ¶このSRFIは、インターンされないシンボルについての共通のインタフェースを定義しています。
インターンされないシンボルとは、内部の名前からシンボルへのハッシュテーブルに登録
されないシンボルのことです。通常のシンボルは名前が登録されているので、
同じ名前のシンボルを読んだらそれがシンボルとしてeq?
になることが保証されています。
インターンされないシンボルは、そのシンボルへの参照を直接受け渡しする以外に、
eq?
であるシンボルを入手する方法がありません。
インターンされないシンボルは、レガシーなLispマクロにおいて名前の衝突を避けるために 便利に使われてきました。マクロ展開時に作られたインターンされないシンボルは プログラム中の他のシンボルと決して衝突しないからです。
Schemeには衛生的マクロシステムがあるので、マクロで名前衝突を避けるために インターンされないシンボルを使う必要はありません(マクロ参照)。 それでも、Gaucheを含む多くのScheme実装ではこの機能を提供しています。 他のLispのイディオムを移植したり、単に実行時にユニークなオブジェクトを得るのに 便利だからです。
このSRFIは、インターンされないシンボルを提供している実装間でポータブルな インタフェースを提供するためのものです。
Gaucheでは、SRFI-258のうち次の2つの手続きは組み込みです。
string->uninterned-symbol symbol-interned?
詳しくはシンボルを参照してください。