如何在Clojure中将函数的名称作为字符串?
到目前为止我所看到的并不像惯用语:
(defn fn-name
[f]
(first (re-find #"(?<=\$)([^@]+)(?=@)" (str f))))
(defn foo [])
(fn-name foo) ;; returns "foo"
Run Code Online (Sandbox Code Playgroud)
编辑:通过提供的提示,我把一个基本的宏放在一起,做我想要的.它看起来更好吗?
(defmacro fn-name
[f]
`(-> ~f var meta :name str))
Run Code Online (Sandbox Code Playgroud) clojure ×1