Следующие функции могут быть использованы для преобразования объекта
в эквивалентный объект другого типа.
result-type
должен быть спецификатором типа.
object будет конвертирован
в «эквивалентный» объект заданного типа. Если преобразование не может
быть осуществлено, будет сигнализирована ошибка. В частности,
(coerce x
’nil) всегда сигнализирует ошибку. Если
object уже принадлежит
заданному типу, это проверяется предикатом
typep, тогда данный
объект будет возвращён. В целом, невозможно преобразовать любой
объект в объект любого другого типа. Допускаются только следующие
преобразования.
- Любой тип последовательности может быть преобразован в
другой тип последовательности. Новый тип последовательности
будет содержать все объекты из старой последовательности (если
это невозможно, тогда возникнет ошибка). Если result-type
задан как array, тогда будет использоваться (array t).
Также может использоваться специализированный тип такой,
как string или (vector (complex short-float)); конечно,
результат в зависимости от реализации может быть более общим
типом. Элементы новой последовательности будут равны eql
соответствующим элементам старой последовательности. Если
последовательность уже принадлежит заданному типу, она может
быть просто возвращена без копирования. В таком случае (coerce