Clojure:函数的完全限定名称

时间:2010-09-21 15:04:17

标签: namespaces clojure

在Clojure中,是否有更优雅的方法来查找函数的完全限定名称(已知具有元信息)而不是

(defn fully-qualified-name [fn]
  (let [fn-meta (meta fn )
        fn-ns (ns-name (:ns fn-meta))
        ]
    (str fn-ns "/" (:name fn-meta))))

需要运行时解决方案。欢迎阅读时和编译时解决方案。

4 个答案:

答案 0 :(得分:10)

(resolve 'foo)返回名为“foo”的Var及其完全限定名称。

答案 1 :(得分:2)

语法引用怎么样?它有自动资格。使用`而不是'

user=> `(inc)
(clojure.core/inc)
user=> `(fn)
(clojure.core/fn)

答案 2 :(得分:2)

无论元信息如何,

type都会提供完全限定的名称。

答案 3 :(得分:1)

.toString的输出可以让你开始:

user=> (.toString map)
"clojure.core$map@11af7bb"