Transients in Clojure is an added feature to the built in immutable values. Essentialy, they are immutable. But Clojure does have mutable-ish versions you can use to build up a semi mutable transient, and when you're done, convert it into an immutable value before it's returned.
The key is to make it fast. Mutable -> immutable is not an O(N) copy.
The key is to make it fast. Mutable -> immutable is not an O(N) copy.