我学习的概念sequence和nilClojure中.这是一个小实验的结果.
1:6 user=> (first '())
nil
1:7 user=> (rest '())
()
1:8 user=> (first (rest '()))
nil
Run Code Online (Sandbox Code Playgroud)
这是否意味着'()实际上是一系列的nils?
Bri*_*per 10
如果要测试集合的"其余"是否为空,请使用next.
user> (next '(foo bar))
(bar)
user> (next '())
nil
user> (doc next)
-------------------------
clojure.core/next
([coll])
Returns a seq of the items after the first. Calls seq on its
argument. If there are no more items, returns nil.
Run Code Online (Sandbox Code Playgroud)
nil去年取消了"nil-punning"(处理空集合/ seq和同样的东西),转而采用完全懒惰的序列.请参阅此处以了解导致此更改的讨论.