AI
(defn swap-diap*
[v i j]
(if (= i j)
v
(let [arr (to-array v)]
(loop [a (min i j)
b (max i j)]
(if (>= a b)
(vec arr)
(let [t (aget arr a)]
(aset arr a (aget arr b))
(aset arr b t)
(recur (inc a) (dec b))))))))
на синтетических тестах работает 8 секунд против 14 у наивного лупа с ассоком в кложевый вектор