% Variable *FEATURES*
Variable *FEATURES*
通常のリスト
実装依存
*features*
の値は、features
リストと呼ばれます。
これはシンボルのリストであり、features
と呼ばれ、
実装や環境のいくつかの状況に対応しています。
多くのfeatures
が実装依存の意味を持っています。
下記の示すものは割り当てられたfeature
の名前です。
:cltl1
LISP
というパッケージが
1984年に制定されたCommon Lisp: The Language
に
適合していることを示します。
このfeature
をもつ適合する実装は、
仕様に指定されたシンボルをLISP
パッケージではなく
COMMON-LISP
パッケージ内にすることができますが、
しかし必須ではありません。:cltl2
Common Lisp: The Language, Second Edition
に
適合していることを示します。
このfeature
は、どのような適合する実装にも存在してはいけません。
なぜならそのドキュメントへの適合性はこの仕様の適合性と互換性がないからです。
しかし、この名前はこの仕様書によって、
プログラムがそのドキュメントの適合によって実装されたものと
またこの仕様書の適合によって実装されたものとの
区別をする助けのために予約されています。:ieee-floating-point
IEEE Standard for Binary Floating-Point Arithmetic
の要求に
適合していることを示します。:x3j13
feature
が含まれている部分があると信じられることを示します。
適合した実装は、このようなfeature
を含むかもしれないし含まないかもしれません
(このfeature
は、時期尚早に:draft-ansi-cl
や:ansi-cl
を導入しないように、
ドラフト版の標準を利用可能にするための
一時しのぎであることを主な目的としています)。:draft-ansi-cl
:draft-ansi-cl
のfeature
が含まれているときは、
:draft-ansi-cl-2
か:ansi-cl
のfeature
持つことは許されていません。
なぜなら最初のドラフトと続くものは互換性が無い変更があるためです。:draft-ansi-cl-2
ansi-cl
のfeature
を持っているものについて、
もし最終的に承認された標準が
ドラフト版の標準と非互換性ではないときに、
だた:draft-ansi-cl
のfeature
のみを保持することが許されます。:ansi-cl
:common-lisp
feature
は、
:x3j13
, :draft-ansi-cl
, :ansi-cl
のfeature
を
ひとつ以上保有するような実装においては
*features*
に現れなければなりません。
これは:cltl1
か:cltl2
のfeature
を持つような実装についても
また現れなければいけませんが、
しかし本仕様書はそのようなふるまいを強制できません。
このfeature
は「Common Lisp」という名前のファミリーの言語と、
そうではなくそのファミリー内の何らかの仕様書における方言と区別するための
同一性を持たせるという意味を持っています。なし。
なし。
1.5.2.1.1. リアルタイムコンディションの使用, 2.4. 標準マクロ文字
*features*
の値は、リーダー構文の#+
と#-
によって使用されます。
features
リスト内のシンボルは、
どのようなパッケージにもなれますが、
実際にはそれらは一般的にKEYWORD
パッケージになります。
これは、 feature
式を読み込むリーダーマクロの#+
と#-
が
標準でKEYWORD
パッケージを使用するためです。
feature
の名前をパッケージP
(KEYWORD
ではなく)で
使用する必要があるコードは、
P
へのパッケージ前置詞を明に使うことで実現できますが、
そのようなコードは
read
でfeature
式を使うために
パッケージP
が存在することを保証しなければならず、
ある場合においてはfeature
式の読み込みが失敗するかもしれません。
一般的に特定の実装で同一性を識別できるfeature
をひとつ以上含めることが
実装にとってより良いと考えられます。
そうすることにより条件式は他とは違うある実装の特異性として区別するような
書き方ができるようになります。
feature
は通常KEYWORD
パッケージのシンボルであるため、
結果として衝突が起こりやすく、
また誰がどのシンボルをどのような理由で使用する権利を持っているかを決定する
一意的なメカニズムがあるわけでもないので、
保守的な戦略として
自分の会社名や製品名から派生した名前を選択することができます。