How can I print the intermediate values in a transient vector?
I tried this but the printed result is not what I want to see.
(let [v (transient [])]
(dotimes [n 3]
(conj! v n)
(println v)))
;; printed v
#object[clojure.lang.PersistentVector$TransientVector 0x162d8132 clojure.lang.PersistentVector$TransientVector@162d8132]
#object[clojure.lang.PersistentVector$TransientVector 0x162d8132 clojure.lang.PersistentVector$TransientVector@162d8132]
#object[clojure.lang.PersistentVector$TransientVector 0x162d8132 clojure.lang.PersistentVector$TransientVector@162d8132]
So I retried like this but failed with an exception.
(let [v (transient [])]
(dotimes [n 3]
(conj! v n)
(persistent! v)
(println v)))
IllegalAccessError Transient used after persistent! call clojure.lang.PersistentVector$TransientVector.ensureEditable (PersistentVector.java:548)