基于Clojure类型的比较

时间:2013-12-04 03:16:57

标签: clojure functional-programming predicates

我有以下记录类型,我试图测试:

(defrecord FirstOrderState [datum matrix]
  State
  ;; implementation goes here ...
  )

我正在尝试根据上述类型进行分支,但我没有得到我需要的结果

(def state (->FirstOrderState datum matrix))

(= (type state) composer.algorithm.markov.state.FirstOrderState)
=> false

但是,查看state的类型确认它应该匹配:

(type state)
=> composer.algorithm.markov.state.FirstOrderState

这似乎应该有效,因为类似的检查会导致true

(= (type []) clojure.lang.PersistentVector)
=> true

我在这里失踪的是什么?使用下面的hack提供了一个解决方案,但不是很优雅:

(= (str (type state)) (str composer.algorithm.markov.state.FirstOrderState))
=> true

1 个答案:

答案 0 :(得分:4)

我的第一个猜测是你重新加载了包含记录类型定义的命名空间state在别处定义(可能在REPL中),所以{{1现在指的是与创建composer.algorithm.markov.state.FirstOrderState时使用的类不同的类。

REPL演示:

state