我正在阅读clojure中关于rest vs next的解释。据我了解,它分解为next
评估/实现序列的尾部,知道它是否应该返回nil
,同时rest
总是返回序列,所以它更懒惰。
但是,我不明白的是:这两个函数都需要知道尾部是否有东西。如果什么都没有,一个会返回nil
,另一个会返回()
。
所以基本上,他们都需要检查/评估剩下的东西。甚至导致rest
返回()
,例如需要知道它不会返回(2)
。
所以甚至rest
需要做评估。
但解释却恰恰相反。那只next
做那个评估,但rest
不做,因此更懒惰。
谁能解释一下?