(rontolisp) docs
← マップ・セット・ベクター

conj

(conj coll x ...)

値を加えた新しいコレクションを返します。種類ごとに、セットには要素、マップにはエントリ、ベクターには末尾、リストには先頭に加えます -- nil はリストのように集めます。マップへ conj されるセットやシーケンス(遅延も可)は、その要素(2 要素のベクター)をエントリとして与え、ソート済みマップは各ペアを、Java の Map(インタプリタと JVM)は各エントリを与えます。エントリでない要素のリスト((k v) を含む)はエントリではなく、それ以外のものと同じくマップへ conj するとシグナルを上げます。record へのエントリ追加は型を保ち、atom(同じセルである ref/agent/volatile を含む)や deftype/reify へはオラクル同様シグナルを上げます。

値としてはコレクションに残り引数の要素列を 1 つずつ畳み込みます。alter/swap! に conj を渡せます。引数なしでは [] を返します(transduce が呼ぶ初期値アリティです)。

仕様との差異: transient(conj!)は名前で拒否されます。