I was browsing core.clj in Clojure's source code and came across the definition of defn. The function it defines takes several arguments, the first of which are &form and &env:
(def
defn (fn defn [&form &env name & fdecl]
;; ...
))
Do these names take on special meaning because they start with &?
I know about rest args and the shorthand anonymous function var %&, but this doesn't seem to be either of those things.
I wasn't able to find anything about this syntax in the Reader reference, which doesn't mention & explicitly:
Symbols begin with a non-numeric character and can contain alphanumeric characters and *, +, !, -, _, ', ?, <, > and = (other characters may be allowed eventually).
Reading Clojure Characters also doesn't appear to mention this. resolve includes an &env arg in its doc string but doesn't elaborate.
(let [&a 1, a&b 2] [&a a&b]) => [1 2]. - Thumbnail