How to print the intermediate values in a transient vector?

65 views
Skip to first unread message

Philos Kim

unread,
Jun 25, 2020, 7:48:42 AM6/25/20
to Clojure
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)

Reply all
Reply to author
Forward
0 new messages