做符号以&开头有特殊意义吗?

时间:2014-06-17 01:17:35

标签: syntax clojure symbols

此示例中&form&env做了什么(取自core.clj)?

(def
  ^{:macro true
    :added "1.0"}
  let (fn* let [&form &env & decl] (cons 'let* decl)))

&...开头的符号(除了普通&之外)在任何情境中都有特殊含义吗?

为什么&form形式的正文中没有使用&envfn*

1 个答案:

答案 0 :(得分:3)

是的,& form和& env是宏中的特殊变量。名称以'&'开头。避免与普通用户定义的符号发生名称冲突。

& form的值是宏扩展之前原始宏调用的形式。

& env的值是词法绑定的映射。 & env的键是词法绑定符号。

[改编自stevenminer's comment]