【发布时间】:2013-02-01 06:58:19
【问题描述】:
我想判断两个值是否属于同一类型,但是发现空列表的类型是clojure.lang.PersistentList$EmptyList而不是clojure.lang.PersistentList。
user=> (def la '())
#'user/la
user=> (def lb '(1 2))
#'user/lb
user=> (def t (map type [la lb]))
#'user/t
user=> t
(clojure.lang.PersistentList$EmptyList clojure.lang.PersistentList)
user=> (apply = t)
false
user=>
所以,我想知道为什么空列表的类型与非空列表的类型不同,以及判断两个事物是否属于同一类型的正确方法是什么?
【问题讨论】:
-
EmptyList只是 IPersistentList 的实现,我想它是由性能原因创建的。而且似乎没有任何其他方法可以比较两个元素的类型。但可能功能list?会对您的情况有所帮助。
标签: clojure