【发布时间】:2019-05-24 15:20:37
【问题描述】:
我在 Clojure 的源代码中浏览 core.clj 并遇到了 defn 的定义。它定义的函数有几个参数,第一个是&form 和&env:
(def
defn (fn defn [&form &env name & fdecl]
;; ...
))
这些名称是否因为以& 开头而具有特殊含义?
我知道 rest args 和速记匿名函数 var %&,但这似乎不是这两件事。
我无法在 Reader reference 中找到有关此语法的任何信息,它没有明确提及 &:
符号以非数字字符开头,可以包含字母数字字符和 *、+、!、-、_、'、?、 和 =(最终可能允许使用其他字符)。
Reading Clojure Characters 似乎也没有提到这一点。 resolve 在其文档字符串中包含 &env 参数,但没有详细说明。
【问题讨论】:
-
尽管读者参考中说,“&”已被接受为符号中任意位置的字符:
(let [&a 1, a&b 2] [&a a&b]) => [1 2]。