public interface ISeq extends IPersistentCollection {
Object first();
ISeq next();
ISeq more();
ISeq cons(Object o);
}
more
界面的 ISeq
方法似乎仅在rest
起作用。为什么将more
命名为rest
?
答案 0 :(得分:7)
这些信息是我对在Clojure git存储库上做一些考古学的解释。
最初只有rest
,它返回nil
而不是今天的emtpy列表。当Rich介绍lazyness时,它已重命名为next
,而ISeq
获得了more
方法。 ASeq
实现more
方法返回空seq而不是nil
,并保留next
方法摘要。在此之后的某个时刻,rest
函数重新生成为我们今天所知的非seq,空列表返回版本,但Java代码未重构。