typespec メモ

object の type を表記する symbol(atomic type specifier)か symbol で始まる list(compound type specifier)。`typep` とかに指定するやつ。その symbol(list の場合は car にある symbol)が xyzzy ではどう扱われてるのかって話。

typep とかは symbol-plist に保存してある関数か structure-definition を使う。

si::type-predicate

OBJECT を引数にとって generalized boolean を返す関数。
si::typespec-alist で alist にまとまってるけど、その直後に plist に突っ込んでる。typep では plist から取ってる。

si::type-specifier-list

OBJECT と compound type specifier の cdr を受け取って generalized boolean を返す関数。

si:structure-definition

'structure-definition' という type の何か。OBJECT が structure の instance なら、その structure の structure-definition と、関数 `si:*structure-subtypep` で比較される。

si::deftype-definition

`deftype` によって定義された type を正規の(?)typespec に展開する関数。compound type specifier の先頭として使われると、cdr が引数として与えられる。
`si:canonicalize-type` はこれを使う。`typep` では(そのままでは)使われない。