Часто бывает полезно задекларировать, что значение, возвращаемое некоторой формой будет принадлежать определённому типу. Использование declare может применяться только к значениям связанным с переменной, но не для безымянных форм. Для этих целей определена специальная форма the. (the type form) означает, что значение формы form будет принадлежать типу type.
Вычисляется форма form. То, что будет вычислено, будет возвращено из формы the. Дополнительно будет осуществлена проверка на принадлежность возвращённого значения типу value-type (его форма не выполняется) и в случае несовпадения выдана ошибка. (Реализация может и не осуществлять эту проверку. Однако такая проверка поощряется при работе в интерпретаторе.) В целом эта форма декларирует, что пользователь гарантирует, что значение формы всегда принадлежит заданному типу. Например:
value-type
может быть любым спецификатором типа. Весь смысл в том, что это декларация, а не точное описание типа.В случае если form возвращает только одно значение и value-type не принадлежит спецификатору values, конструкцию the можно заменить следующей:
В случае возврата нескольких значений, конструкция может быть записана более точно, используя, например, multiple-value-bind.