如何在Clojure中编写/执行类型操作?

时间:2009-07-23 19:21:54

标签: clojure

我很难在Clojure中编写类型检查。请帮助我。

  1. 我如何编写/执行'char?'在Clojure?
  2. 如何编写/执行'atom?'在Clojure?

  3. 我如何知道Clojure中的项目类型?
    我可以写(type? an-item)吗?

2 个答案:

答案 0 :(得分:4)

通常,Clojure中的类型问题归结为“这是什么类,或者原始包装类可以包含它”。这来自Clojure对java的一流处理。 Clojure使用java类而不是引入自己的类型系统,这需要批量或包装器来自java的来回转换。

  1. (= Character (class \a))
  2. (symbol? 'asdf) ; not quite what you want but close. see http://clojure.org/reader
  3. (= 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)))