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 代码没有被重构。