2009-07-23 37 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