为什么“更多”的ISeq没有被命名为“休息”?

时间:2013-04-04 15:36:47

标签: clojure

public interface ISeq extends IPersistentCollection {
  Object first();
  ISeq next();
  ISeq more();
  ISeq cons(Object o);
}
more界面的

ISeq方法似乎仅在rest起作用。为什么将more命名为rest

1 个答案:

答案 0 :(得分:7)

这些信息是我对在Clojure git存储库上做一些考古学的解释。

最初只有rest,它返回nil而不是今天的emtpy列表。当Rich介绍lazyness时,它已重命名为next,而ISeq获得了more方法。 ASeq实现more方法返回空seq而不是nil,并保留next方法摘要。在此之后的某个时刻,rest函数重新生成为我们今天所知的非seq,空列表返回版本,但Java代码未重构。