просто краткое примечание:
"I read that Vectors are not seqs, but Lists are."
последовательности являются более общими, чем списки или векторы (или карты или наборы).
К сожалению, REPL печатает списки и последовательности одинаково , потому что это действительно делает их похожими на списки, даже если они разные. функция (seq) создаст последовательность из множества различных вещей, включая списки, и вы можете затем передать этот seq любому из множества функций, которые делают изящные вещи с помощью seqs.
user> (class (list 1 2 3))
clojure.lang.PersistentList
user> (class (seq (list 1 2 3)))
clojure.lang.PersistentList
user> (class (seq [1 2 3]))
clojure.lang.PersistentVector$ChunkedSeq
Sec имеет ярлык, который возвращает аргумент, если он уже является seq:
user> (let [alist (list 1 2 3)] (identical? alist (seq alist)))
true
user> (identical? (list 1 2 3) (seq (list 1 2 3)))
false
static public ISeq seq(Object coll){
if(coll instanceof ASeq)
return (ASeq) coll;
else if(coll instanceof LazySeq)
return ((LazySeq) coll).seq();
else
return seqFrom(coll);
}
списки являются последовательностями, хотя есть и другие вещи, и не все последовательности являются списками.