скорее получается что оборачиваешь функцию в io! и если гдето в цепочке встречается обращение во внешний мир, бросается исключение, т.е. запустить и выполнить функцию с побочным можно, но грозит тем, что транзакции подвиснут.
https://clojuredocs.org/clojure.core/io!
а что дает использование побочного эффекта в stm, в том плане, что я могу побочный эффект выполнить снаружи, и если все ок, поменять стейт. полагаю это связано с природой самого хаскеля и его работой со стейтом?