私はそれcons
がシーケンスをconj
返し、コレクションを返すことを知っています。またconj
、コレクションの最適な末尾にcons
アイテムを「追加」し、常にアイテムを前面に「追加」することも知っています。この例は、これらの両方のポイントを示しています。
user=> (conj [1 2 3] 4) ; returns a collection
[1 2 3 4]
user=> (cons 4 [1 2 3]) ; returns a seq
(4 1 2 3)
ベクトル、マップ、およびセットの場合、これらの違いは私には理にかなっています。ただし、リストの場合は同じように見えます。
user=> (conj (list 3 2 1) 4) ; returns a list
(4 3 2 1)
user=> (cons 4 (list 3 2 1)) ; returns a seq
(4 3 2 1)
リストを使用して、任意の例があるconj
対はcons
異なる挙動を示すが、または彼らは本当に互換性がありますか?別の言い方をすると、リストとシーケンスを同等に使用できない例はありますか?