Clojure中函数名称中的箭头

aha*_*ala 5 clojure

对于下面的代码,箭头是函数名称中的宏还是简单字符?(从这里)

(defn file->map
  [file]
  ;; TODO
)
Run Code Online (Sandbox Code Playgroud)

Chi*_*ron 5

箭头是函数名称的一部分。有一个函数定义,不是吗?

(defn file->map  [file]
  ;; TODO)
Run Code Online (Sandbox Code Playgroud)

(defn)定义一个函数。在您的REPL中,键入:

(doc defn) 

(source defn)
Run Code Online (Sandbox Code Playgroud)

甚至Clojure核心代码也提供了这样的名称,例如cond->>,cond->,as->,some->>

  • 在http://clojure.org/reader上,当前没有将'>`字符列为安全使用在符号中的安全字符,但由于`->`组合很普遍,因此似乎很有可能会继续使用该字符。 (3认同)
  • @ A.Webb:还有defrecord生成的功能:--Foo和map-> Foo。因此在我看来,这个字符尚未被明确允许是一个疏忽,因为Clojure本身在各处都使用了该符号。也许他们正在考虑XML文字,并想在`<'之后禁止使用它,但是箭头在符号的开头,中间和结尾显然是有效的。 (2认同)