Chicken Scheme определяет макрос (when)
, эквивалентный (if (begin))
. Однако, когда я пытаюсь вызвать это из одного из моих собственных макросов, он жалуется, что «переменная» не определена:
(define-syntax blah
(ir-macro-transformer
(lambda (expr inject compare)
(when something
(do-something)))))
Ошибка: во время раскрытия (бла...) - несвязанная переменная: когда
Что я могу import
сделать, чтобы это сработало?
something
ложно, каким будет расширение? - person Sylwester   schedule 11.08.2016(if something (begin (do-something)))
, что является вполне допустимым кодом. - person Sod Almighty   schedule 11.08.2016(if something (begin (do-something)))
, когдаsomething
ложно, не будет правильным кодом, и макрос должен стать кодом. Ваша программа остановится с загадочной ошибкой недопустимый неатомарный объект: #‹unspecified›, поскольку возвращаемое ложное значение — это значение#<unspecified>
- person Sylwester   schedule 11.08.2016when
. Это совершенно не связано с тем, правильный ли мой макрос. - person Sod Almighty   schedule 11.08.2016(use-for-syntax <name-of-egg>)
. Я думаю, нам нужно подождать, пока более продвинутый пользователь курицы ответит, что импортировать. - person Sylwester   schedule 11.08.2016use-for-syntax
. Я как бы надеялся на что ;) - person Sod Almighty   schedule 11.08.2016