Why is it being counted? return true in one case and false in another?

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=> 
+3
source share
1 answer
  • (repeat 10 1) returns LazySeq
  • (list 1 2 3) returns a PersistentList

Obviously, there is no way to know how many elements are in a lazy sequence until this sequence is evaluated.

counted?returns true for any class that implements the interface clojure.lang.Counted.

+6
source

All Articles