Я пытаюсь перевести некоторый код Common Lisp в код схемы. Код Common Lisp имеет расширение deftype. Являются ли deftype в Scheme такими же, как deftype в Common Lisp? Как перевести deftype в Common Lisp в эквивалентный код в Scheme?
Разница между deftype в Common Lisp и Scheme
Ответы (2)
Как говорит Антон, нет точного эквивалента Схемы Common Lisp deftype. См. CLHS:Спецификаторы типов для описания того, каким может быть спецификатор типа в Common Lisp. Они используются в объявлениях, спецификациях типов массивов, спецификациях структур и слотов CLOS, специализации аргументов общих функций и так далее. Перенос этого на Scheme, как правило, будет монументальной задачей. Ваша лучшая надежда состоит в том, что типы, определенные deftype, используются только тривиально (или не используются вообще!).
Common Lisp deftype не имеет точного эквивалента Scheme. Вам придется перевести определения типов вручную или написать макрос deftype с точки зрения любой библиотеки записей Scheme, доступной в вашей системе.
В Bare Scheme вообще нет пользовательских типов. В системе R5RS вам придется искать соответствующие SRFI (например, SRFI-9 (типы записей), записи SRFI-57, записи SRFI-99 ERR5RS), а также посмотрите, какие SRFI и языковые расширения реализует ваша конкретная система Scheme; Системы Scheme обычно не очень последовательны в своих реализациях чего-либо, кроме минимального стандарта Scheme. Схема R6RS имеет записи в своей стандартной библиотеке. а>.
defstruct?
- person Doug Currie; 08.08.2009