Common Lisp the Language
2nd Edition
New type specifiers can come into existence in two ways. First defining a new structure type with defstruct automatically causes the name of the structure to be a new type specifier symbol. Second the deftype special form can be used to define new type-specifier abbreviations.
[Macro]
deftype name lambda-list [[{declaration}* | doc-string]] {form}*
This is very similar to a defmacro form: name is the symbol that identifies the type specifier being defined lambda-list is a lambda-list (and may contain &optional and &rest markers) and the forms constitute the body of the expander function. If we view a type specifier list as a list containing the type specifier name and some argument forms type specifier list as a list containing the type specifier name and some argument formsration}* | doc-stri