文档说它是一种特殊形式,但我发现它被定义为宏。
另外,(meta #'fn)
的:macro
和:special-form
都为true。
最后,(special-symbol? 'fn)
是 false
而 (special-symbol? 'fn*)
是 true
。
有人能为我澄清一下吗?
在Clojure中是否还有其他既是特殊形式又是宏的奇怪符号?
而不是 special-symbol
?
还有一件事,这是我迄今为止见过的唯一可调用符号,它有这样的(meta #'fn)
:
{:arglists ([& sigs]),
:forms [(fn name? [params*] exprs*)
(fn name? ([params*] exprs*) +)]...}
因此,参数列表不像其他符号一样在
:arglists
中,而是在:forms
中。Clojure中还有其他类似的符号吗?
case case*,import import*,reify reify*,deftype deftype*
。 - A. Webb