4.5 Уточняющие спецификаторы типов

Некоторые списки, представляющие типы, с помощью символов могут быть более специализированы. Такие подробности могут быть отражены, как более эффективная реализация. Например, предположим что (array short-float). Реализация A, может выбрать специализированное представление для массива коротких с плавающей точкой, а реализация B может выбрать более общее представление.

Если вы хотите создать массив в целях хранения только коротких с плавающей точкой, вы можете опционально указать для make-array тип элементов short-float. Это не потребует от make-array создать объект типа (array short-float), но это просто позволит ей выбрать родственный тип. Запрос можно объяснить так: «Предоставь наиболее специализированный массив, который может хранить короткие с плавающей точкой, который только может предоставить реализация». Реализация A тогда предоставит специализированный массив типа (array short-float), а реализация B — простой массив типа (array t).

На вопрос, действительно ли тип созданного массива (array short-float), реализация A ответит «да», но реализация B ответит «нет». Это свойство make-array и подобных ей функций: то, что вы просите, необязательно является тем, что вы получите.

Далее перечислены возможные имена типов, которые задаются списком: