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)))
Это вернет список, который содержит только один символ в качестве своего элемента.