这是STM系统的一部分,确保与IO相关的代码不会在STM事务中使用。由于Clojure会在事务运行时重试事务,如果另一个线程提交矛盾的数据,则该事务产生的任何IO都将是虚假的,因为它代表了可能被丢弃的存储器状态。