在Clojure的Java源代码中,我看到:
import clojure.lang.RT;
import clojure.lang.IFn;
Run Code Online (Sandbox Code Playgroud)
RT
似乎代表"运行时"(虽然在答案中没有给出官方消息来源:在clojure源代码中,RT代表什么?)
但是什么IFn
代表什么?
fn
用 clojure 的术语来说,和之间还有一个区别ifn
:
user> (defn f [x] x)
#'user/f
user> (map fn? [f #(list %) :keyword 'sym {:a 10} #{123} [1 2 3] 10 "asd"])
(true true false false false false false false false)
user> (map ifn? [f #(list %) :keyword 'sym {:a 10} #{123} [1 2 3] 10 "asd"])
(true true true true true true true false false)
Run Code Online (Sandbox Code Playgroud)
因此,正如您所看到的fn?
,仅适用于实际函数,而ifn?
如果适用于任何内容,则可以将其作为函数调用(如关键字、映射等)