Gensym процедура с воровством r7rs

Под larceny r7r6 для схемы, я пытаюсь использовать gensym процедура, как это, по-видимому, определено в документации.

При его вызове (либо в файле, либо в консоли, набрав larceny -r7r6), Я получаю сообщение об ошибке, в котором говорится, что gensym - неопределенная глобальная переменная.

Я забыл импорт или он недоступен? Есть ли новое имя или реализация, которую я могу найти где-нибудь?

1 ответ

Решение

gensym Процедура не определена ни в R6RS, ни в R7RS. Поэтому вам нужно импортировать его отдельно, если вы хотите использовать его в среде R6RS/R7RS, например:

(import (primitives gensym))

Может быть лучше использовать generate-temporaries процедура, которая определена в (rnrs) возвращение списка временных идентификаторов. Вы можете использовать его, чтобы создать новый символ, как это

(apply syntax->datum (generate-temporaries '(a)))

Это вернет список, который содержит только один символ в качестве своего элемента.

Другие вопросы по тегам