Uso de los transitorios de clojure.

Estoy un poco perdido con el uso de transitorios en clojure. Cualquier ayuda será apreciada. El código de muestra:

(defn test-transient [v]
    (let [b (transient [])]
        (for [x v] (conj! b x))
        (persistent! b)))

user> (test-transient [1 2 3])
[]

Intenté hacerla persistente antes de regresar y el resultado es:

(defn test-transient2 [v]
    (let [b (transient [])]
        (for [x v] (conj! b x))
        (persistent! b)
        b))

user> (test-transient2 [1 2 3])
#<TransientVector clojure.lang.PersistentVector$TransientVector@1dfde20>

¡Pero si uso conj! por separado parece funcionar bien:

(defn test-transient3 [v]
    (let [b (transient [])]
    (conj! b 0)
    (conj! b 1)
    (conj! b 2)
    (persistent! b)))

user> (test-transient3 [1 2 3])
[0 1 2]

¿Tiene alguna restricción para? Si es así, ¿cómo puedo copiar valores de vector persistente a transitorio?

Gracias.

Respuestas a la pregunta(1)

Su respuesta a la pregunta