Sono abbastanza sicuro che ci debba essere un modo più idiomatico di scrivere questo:
(defn update-2nd-level-vector
[map index value]
(assoc map :key1 (assoc (get map :key1) :key2 (-> map (get-in [:key1 :key2]) (assoc index value)))))
Esempio del suo funzionamento:
=> (update-2nd-level-vector {:key1 {:key2 [0 1]}} 0 1)
{:key1 {:key2 [1 1]}}