2009-07-23 38 views
2

我很难在Clojure中写入类型检查。请帮助我。如何在Clojure中编写/执行类型操作?

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

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

回答

4
user> (instance? Character \c) 
true 

Character这里是java.lang.Character

我认为atom?的传统定义是“无,或者任何不是成对的东西”,但这在Clojure中没有意义,因为Clojure不使用cons细胞来处理太阳下的所有事情。我们也有矢量和hashmaps和套等等。在Clojure中的一种可能性是:

(defn atom? [x] (not (coll? x))) 
4

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

  1. (= Character (class \a))
  2. (symbol? 'asdf) ; not quite what you want but close. seehttp://clojure.org/reader
  3. (= String (class "asdf"))
+0

Brians anser using instance?比使用=更好 – 2009-07-23 21:49:42