为什么算?在一个案例中返回true而在另一个案例中返回false

时间:2011-03-19 18:36:18

标签: clojure

Clojure 1.2.0
user=> (def x (repeat 10 1))
#'user/x
user=> (counted? x)
false
user=> (def x (list 1 2 3))
#'user/x
user=> (counted? x)
true
user=> 

1 个答案:

答案 0 :(得分:6)

  • (repeat 10 1)返回LazySeq
  • (list 1 2 3)返回PersistentList

显然,在评估该序列之前,无法知道延迟序列中有多少项。

对于任何实现counted?接口的类,

clojure.lang.Counted都返回true。