Как обновить элемент в векторе в Clojure?

Если у меня есть вектор:

[1 2 3 4 5 6 7 8 9]

: и я хочу заменить 5 на 0, чтобы дать:

[1 2 3 4 0 6 7 8 9]

Как это сделать, когда я знаю только индекс как 4?

Что-то вроде:

 (replace-in-vec [1 2 3 4 5 6 7 8 9] 4 0)

Ответ 1

assoc тоже работает с векторами!

 Usage: (assoc map key val)
        (assoc map key val & kvs)

ассоциативный [Iate]. Когда применяется к карте, возвращает новую карту того же (хэшированный/отсортированный) тип, который содержит отображение ключа (ов) в val (s). Когда применяется к вектору, возвращает новый вектор, содержащий val в индексе.Примечание. Индекс должен быть <= (count вектор).

(assoc [1 2 3] 1 :a)
 => [1 :a 3]