deftype

Title
deftype
Type
Macro
Arguments
deftype NAME (&rest LAMBDA-LIST) &rest BODY
Package
lisp
Section
データ型
File
typespec.l
NAME と言う名前のデータ型を定義します。
定義したデータ型は typep や subtypep などで使うことができます。
ただし typep で使う場合には、使用前に si:canonicalize-type で
処理することが必要なようです。

使用例:
  ;; lisp/typespec.l より
  ;; mod という型を定義
  (deftype mod (n)
    `(integer 0 ,(1- n))) ; 0 以上 n 未満の整数
  (typep 3 (si:canonicalize-type '(mod 5)))
  => t

  ;; 奇数型を作ってみる
  (deftype odd ()
    `(and integer
          (satisfies oddp)))
  (typep 3 (si:canonicalize-type 'odd))
  => t
  (subtypep 'odd 'integer)
  => t
  => t
Seealso
si:canonicalize-type
subtypep
typep
型一覧