Если типа задаётся списком, car элемент данного списка является символом, и остаток списка — вспомогательной информацией. В большинстве случаев вспомогательная информация может быть неопределена. Неопределённая дополнительная информация указывается с помощью *. Например, для полного описания векторного типа, должны быть указаны тип элементов и их количество:
Для указания неопределённой длины, можно записать:
Для указания неопределённого типа элемента, можно записать:
Можно также оставить неопределёнными и тип элемента, и длину:
Допустим, что два спецификатора являются одинаковыми за исключением того, что первый содержит *, а второй содержит конкретное значение. Тогда второй тип является подтипом первого типа.
| array | fixnum | package | simple-string |
| atom | float | pathname | simple-vector |
| bignum | function | random-state | single-float |
| bit | hash-table | ratio | standard-char |
| bit-vector | integer | rational | stream |
| character | keyword | readtable | string |
| list | sequence | ||
| compiled-function | long-float | short-float | symbol |
| complex | nil | signed-byte | t |
| cons | null | simple-array | unsigned-byte |
| double-float | number | simple-bit-vector | vector |
Для удобства существует следующее правило: если список в конце содержит незаданные элементы (*), то они могут быть опущены. Если все, за исключением первого, элементы не специфицированы, то данный список может быть упрощён вплоть до упразднения скобок и превращения его в простой символ, который был в car. Например, (vector * *) может быть записан как (vector), а затем как vector.