Разница между deftype в Common Lisp и Scheme - PullRequest
3 голосов
/ 07 августа 2009

Я пытаюсь перевести некоторый код Common Lisp в код Scheme. Код Common Lisp имеет deftype. deftype s в Схеме совпадают с deftype s в Common Lisp? Как вы переводите deftype в Common Lisp в эквивалентный код на Схеме?

Ответы [ 2 ]

3 голосов
/ 08 августа 2009

Как говорит Антон, точной Схемы, эквивалентной Common Lisp deftype, не существует. См. CLHS: Спецификаторы типов для описания того, что может быть спецификатор типа в Common Lisp. Они используются в объявлениях, спецификациях типов массивов, спецификациях слотов структуры и CLOS, специализации аргументов общих функций и так далее. Перенос этого на Схему, как правило, будет огромной проблемой. Ваша лучшая надежда состоит в том, что типы, определенные deftype, используются только тривиально (или не используются вообще!).

1 голос
/ 07 августа 2009

Common Lisp deftype не имеет точного эквивалента Схемы. Вам придется переводить определения типов вручную или писать макрос deftype в зависимости от того, какая библиотека записей Scheme доступна в вашей системе.

Bare Scheme вообще не имеет пользовательских типов. В системе R5RS вам придется искать соответствующие SRFI (например, SRFI-9 (Типы записей) , SRFI-57 Записи , SRFI-99 ERR5RS записи ), а также посмотрите, какие SRFI и языковые расширения реализует ваша конкретная система Scheme; Системы Scheme обычно не очень последовательны в своих реализациях чего-либо кроме минимального стандарта Scheme. Схема R6RS имеет записи в своей стандартной библиотеке .

...