此示例中&form
和&env
做了什么(取自core.clj)?
(def
^{:macro true
:added "1.0"}
let (fn* let [&form &env & decl] (cons 'let* decl)))
以&...
开头的符号(除了普通&
之外)在任何情境中都有特殊含义吗?
为什么&form
形式的正文中没有使用&env
和fn*
?
答案 0 :(得分:3)
是的,& form和& env是宏中的特殊变量。名称以'&'开头。避免与普通用户定义的符号发生名称冲突。
& form的值是宏扩展之前原始宏调用的形式。
& env的值是词法绑定的映射。 & env的键是词法绑定符号。