我需要一个可以判断符号是指向特殊形式还是宏的函数。
我在clojure.test命名空间中找到了function?
函数,因此可以使用它,但我对使用它感到犹豫,因为它似乎只是出于测试目的。可以将它用于普通代码吗?如果没有,我怎样才能实现目标。
如上所述,评论fn?
不起作用,因为它只适用于函数本身,而不适用于指向它们的符号。
答案 0 :(得分:1)
如果它符合您的要求,请使用它。它在clojure.test
中,因为它不会对非测试代码有用,但如果它是您特定用例的最佳函数,那么就没有理由因为函数的位置而妨碍自己。换句话说,clojure.test
与组织的clojure.core
是分开的,而不是因为它只能用于测试。
答案 1 :(得分:-1)
你可以找到所有特殊形式,: - )
(defn special-symbol?
[s]
(contains? (. clojure.lang.Compiler specials) s))