https://clojuredocs.org/clojure.core/assoc! - восклицательный знак используется для указания, что используются переходные коллекции.
"Переходные (transient) коллекции – это зеркальное отражение
сохраняемых коллекций: сохраняемые коллекции гарантируют це-
лостность предыдущих версий значения, а переходные – нет. После
изменения, любая ссылка на прежнюю версию переходной коллек-
ции становится ненадежной – она может ссылаться на допустимое
значение, на новое значение или на «мусор»". Ч. Эмерик.