Juste une petite note en passant :
"I read that Vectors are not seqs, but Lists are."
les séquences sont plus génériques que les listes ou les vecteurs (ou les cartes ou les ensembles).
Il est regrettable que la REPL imprime les listes et les séquences de la même manière La fonction (seq ) crée une séquence à partir d'un grand nombre de choses différentes, y compris des listes, et vous pouvez ensuite transmettre cette séquence à une pléthore de fonctions qui font des choses intéressantes avec les séquences.
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 dispose d'un raccourci qui renvoie son argument s'il s'agit déjà d'un 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);
}
les listes sont des séquences, mais d'autres choses le sont également, et toutes les séquences ne sont pas des listes.
1 votes
En rapport stackoverflow.com/questions/6928327/