Clojure использование переходных процессов
Я немного потерял с использованием переходных процессов в clojure. Любая помощь будет оценена. Пример кода:
(defn test-transient [v]
(let [b (transient [])]
(for [x v] (conj! b x))
(persistent! b)))
user> (test-transient [1 2 3])
[]
Я попытался сделать это постоянным до возвращения, и в результате:
(defn test-transient2 [v]
(let [b (transient [])]
(for [x v] (conj! b x))
(persistent! b)
b))
user> (test-transient2 [1 2 3])
#
Но если я использую кон! отдельно кажется работает нормально
(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]
Есть ли какие-то ограничения? Если так, как я могу скопировать значения из постоянного вектора в переходный процесс?
Спасибо.