ref-set vs commute vs alter
Qual é a diferença nas três maneiras de definir o valor de uma ref no Clojure? Eu li os documentos várias vezes sobre ref-set, commute e alter. Estou um pouco confuso sobre quais usar em que horários. Alguém pode me fornecer uma breve descrição de quais são as diferenças e por que cada uma é necessária?