Макросы схемы, по крайней мере, с синтаксическим регистром, как говорят, позволяют преобразовывать произвольные вычисления в коде.Однако (как в общем, так и в конкретном случае, который я сейчас рассматриваю) это требует, чтобы вычисление было задано в терминах рекурсивных функций.Когда я пробую различные варианты этого, я получаю, например,
main.scm: 32: 71: compile: несвязанный идентификатор в модуле (в среде преобразователя, который не включает определение времени выполнения) в: раскрыть-vars
(Реализация - Racket, если это имеет значение.)
В результате получается, что вы не можете определить именованные функции до тех пор, пока не обработаете макрос.Предположим, я мог бы прибегнуть к комбинатору Y, но я полагаю, что сначала стоит спросить, есть ли лучший подход?