public interface ISeq extends IPersistentCollection {
Object first();
ISeq next();
ISeq more();
ISeq cons(Object o);
}
more接口方法ISeq似乎正在运行rest。more为什么不命名rest?
public interface ISeq extends IPersistentCollection {
Object first();
ISeq next();
ISeq more();
ISeq cons(Object o);
}
more接口方法ISeq似乎正在运行rest。more为什么不命名rest?
这些信息是我对 Clojure git 存储库做一些考古的解释。
最初只有rest, 它返回nil而不是像今天那样返回 emtpy 列表。当 Rich 引入惰性时,它被重命名next,并ISeq获得了more方法。ASeq实现该more方法以返回一个空的 seq 而不是nil,并next保留方法抽象。在此之后的某个时刻,该rest函数作为我们今天所知的非序列、返回空列表的版本重新焕发生机,但 Java 代码没有被重构。