(rontolisp) docs
← Maps, sets and vectors

transient

(transient coll)

A transient over a copy of the vector, map or set coll: the bang verbs (conj!, assoc!, dissoc!, disj!, pop!) edit that copy in place, so a run of them costs one edit each, and persistent! hands it back as a collection. coll is untouched. A transient is no collection: count, get, nth, contains?, find, a call and a keyword read it, seq (and every verb over the seq view) refuses it, = and hash are identity, and it prints as the oracle's #object without the identity hash. A list, a sorted collection, a record or a string is refused as the oracle's ClassCastException, nil as its NullPointerException; a type implementing IEditableCollection answers its asTransient. As a value a one-argument function.

Deviation: a bang verb answers the transient itself, where the oracle's may answer another object (an array map's assoc! past eight entries); a program using the answer behaves alike. nth past the end answers nil, as it does for a vector.