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

yal*_*lis 3 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=> 
Run Code Online (Sandbox Code Playgroud)

dby*_*rne 6

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

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

counted?对于实现clojure.lang.Counted接口的任何类,返回true .