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