Когда я надеваю шляпу C, я думаю, что, возможно, идиоматический Clojure просто делает простую вещь и проверяет возвращаемые значения.
Когда я надеваю шляпу Java (неохотно, должен добавить), я думаю про себя, что, поскольку Clojure работает на JVM, естественным способом должно быть использование исключений JVM.
Когда я надеваю свою функциональную шляпу, я думаю, что должна быть какая-то монадическая конструкция или многопоточный макрос, который может компонуемым образом обрабатывать ошибки.
Итак, каков идиоматический способ обработки ошибок в программе Clojure?