我很难在Clojure中编写类型检查。请帮助我。
如何编写/执行'atom?'在Clojure?
我如何知道Clojure中的项目类型?
我可以写(type? an-item)
吗?
答案 0 :(得分:4)
通常,Clojure中的类型问题归结为“这是什么类,或者原始包装类可以包含它”。这来自Clojure对java的一流处理。 Clojure使用java类而不是引入自己的类型系统,这需要批量或包装器来自java的来回转换。
(= Character (class \a))
(symbol? 'asdf) ; not quite what you want but close. see
http://clojure.org/reader (= String (class "asdf"))
答案 1 :(得分:4)
user> (instance? Character \c)
true
Character
这里是java.lang.Character
。
我认为atom?
的传统定义是“零,或者不是一对”,但这在Clojure中没有任何意义,因为Clojure不会在阳光下使用cons单元。我们还有矢量和哈希映射和集合等.Clojure中的一种可能性是:
(defn atom? [x] (not (coll? x)))