Macros 如何称之为;什么时候;鸡方案中的宏宏宏?

Macros 如何称之为;什么时候;鸡方案中的宏宏宏?,macros,scheme,chicken-scheme,Macros,Scheme,Chicken Scheme,鸡肉方案定义了一个(when)宏,相当于(if(begin))。但是,当我试图从自己的宏中调用它时,它会抱怨“变量”未定义: (define-syntax blah (ir-macro-transformer (lambda (expr inject compare) (when something (do-something))))) 错误:在扩展(blah…)期间-未绑定变量:何时 我可以导入什么来实现这项功能?与相同的答案;只要(为语法鸡导入)就可以了。如果某个东西是

鸡肉方案定义了一个
(when)
宏,相当于
(if(begin))
。但是,当我试图从自己的宏中调用它时,它会抱怨“变量”未定义:

(define-syntax blah
 (ir-macro-transformer
  (lambda (expr inject compare)
   (when something
    (do-something)))))
错误:在扩展(blah…)期间-未绑定变量:何时


我可以导入什么来实现这项功能?

与相同的答案;只要
(为语法鸡导入)
就可以了。

如果
某个东西是假的,那么扩展会是什么?不会有扩展。它相当于
(如果某件事(开始(做某件事))
,这是完全有效的代码。是的,但请记住,结果是作为代码计算的。当
某物
为false时,
(如果某物(开始(做某事))
的结果将不是正确的代码,宏需要变成代码。您的程序将以非法非原子对象的神秘错误停止:#因为返回的假值是值
#
我意识到这一点。这在我写宏时经常发生,就像我刚开始写Scheme一样。但这不是重点,与我所犯的错误无关。我想做的就是能够调用内置的checkscheme宏,比如
when
。这与我的宏是否“正确”完全无关。好的。除此之外,还需要导入符号,以便在宏展开时使用。对于鸡蛋,它是
(用于语法)
。我想我们需要等待一个更高级的鸡肉用户来回答要导入的内容。