Когда использовать восклицательный знак в clojure (или lisp)?

Говорят, что используют восклицательные знаки при именовании нечистых функций.

Но я не совсем понимаю «нечистые» функции. Они

функции меняют состояние своих аргументов (через reset !, alter, java-object-method, ...)функции возникают побочные эффекты (например, печать, плевать, ...)или оба?

Очевидно, что официальные apl clojure не имеют взрыва на каждый случай выше. Интересно, когда мне их поставить и нужна ваша помощь, чтобы сделать мой код более разумным?

Ответы на вопрос(1)

Ваш ответ на вопрос