4.2.3. 型指定子

UP


4.2.3. 型指定子

型指定子はシンボル、クラス、リストになれます。 figure_4-2は、標準の原始的な型指定子であるシンボルのリストです。 figure_4-3は、標準の合成された型指定子の名前のリストです。 構文の情報は、対応する型指定子の辞書の説明をみて下さい。 これはdefclass, define-condition, defstruct, deftypeを使うことで新しい型指定子を定義することができます。

arithmetic-error function simple-condition
array generic-function simple-error
atom hash-table simple-string
base-char integer simple-type-error
base-string keyword simple-vector
bignum list simple-warning
bit logical-pathname single-float
bit-vector long-float standard-char
broadcast-stream method standard-class
built-in-class method-combination standard-generic-function
cell-error nil standard-method
character null standard-object
class number storage-condition
compiled-function package stream
complex package-error stream-error
concatenated-stream parse-error string
condition pathname string-stream
cons print-not-readable structure-class
control-error program-error structure-object
division-by-zero random-state style-warning
double-float ratio symbol
echo-stream rational synonym-stream
end-of-file reader-error t
error readtable two-way-stream
extended-char real type-error
file-error restart unbound-slot
file-stream sequence unbound-variable
fixnum serious-condition undefined-function
float short-float unsigned-byte
floating-point-inexact signed-byte vector
floating-point-invalid-operation simple-array warning
floating-point-overflow simple-base-string
floating-point-underflow simple-bit-vector

Figure 4-2. 標準の原始的な型指定子

もし型指定子がリストであり、そのリストのcarがシンボルのとき、 リストのrest部は型の補助的な情報です。 そのような型指定子は合成された型指定子と呼ばれます。 明示的に別段の定めがある場合を除き、 補助的な項目は不特定とすることができます。 不特定の補助的な項目は、*と書くことで指定します。 例えばvectorの完全な指定は、 要素の型とvectorの長さが現れます。

(vector double-float 100)

下記に長さを不特定にしたものを示します。

(vector double-float *)

下記に要素の型を不特定にしたものを示します。

(vector * 100)

2つの型指定子が同じで、 最初の型指定子が*を持つのに対して、 2番目の型指定子はより明示的な指定をしているとします。 このとき、2番目の型指定子は1番目の型指定子のサブタイプを表します。

もしリストがひとつか複数の不特定な項目で終わっていたとき、 それらの項目は省略できます。 もし補助的なリスト全てに*が現れてそれらを省略したときは、 かっこもまた省略可能です(そのリストはシンボルのcar部に置き換えられます)。 例えば、(vector double-float *)(vector double-float)に省略できますし、 (vector * *)(vector)に省略でき、さらにvectorに省略できます。

and long-float simple-base-string
array member simple-bit-vector
base-string mod simple-string
bit-vector not simple-vector
complex or single-float
cons rational string
double-float real unsigned-byte
eql satisfies values
float short-float vector
function signed-byte
integer simple-array

Figure 4-3. 標準の合成された型指定子の名前

次の表は原始的な型指定子としては使えない 合成された型指定子の名前として使われる 定義された名前を表します。

and mod satisfies
eql not values
member or

Figure 4-4. 標準の合成のみの型指定子の名前

新しい型指定子は、次の2つの方法で定義できます。

クラスオブジェクトは型指定子として使用できます。 この方法で使ったとき、それはクラスの全てのメンバーの集合を示します。

次の表は、型と宣言に関係する定義された名前を示します。

coerce defstruct subtypep
declaim deftype the
declare ftype type
defclass locally type-of
define-condition proclaim typep

Figure 4-5. 型と宣言に関係する定義された名前

次の表は、原始的な型指定子と合成された型指定子の 両方の型指定子として使われる定義された名前を示します。 これは、figure_4-2figure_4-3を合わせたリストです。

and function simple-array
arithmetic-error generic-function simple-base-string
array hash-table simple-bit-vector
atom integer simple-condition
base-char keyword simple-error
base-string list simple-string
bignum logical-pathname simple-type-error
bit long-float simple-vector
bit-vector member simple-warning
broadcast-stream method single-float
built-in-class method-combination standard-char
cell-error mod standard-class
character nil standard-generic-function
class not standard-method
compiled-function null standard-object
complex number storage-condition
concatenated-stream or stream
condition package stream-error
cons package-error string
control-error parse-error string-stream
division-by-zero pathname structure-class
double-float print-not-readable structure-object
echo-stream program-error style-warning
end-of-file random-state symbol
eql ratio synonym-stream
error rational t
extended-char reader-error two-way-stream
file-error readtable type-error
file-stream real unbound-slot
fixnum restart unbound-variable
float satisfies undefined-function
floating-point-inexact sequence unsigned-byte
floating-point-invalid-operation serious-condition values
floating-point-overflow short-float vector
floating-point-underflow signed-byte warning

Figure 4-6. 標準の型指定子の名前


TOP, Github