私はProgrammingClojureの本を読んでいます。とSTMを説明alter
している間、彼らは、変更中に、Clojureがトランザクションの外部からrefへの変更を検出した場合、新しい値でトランザクションを再実行すると言います。その場合、渡す更新関数は純粋である必要があると思いますが、それはドキュメントには示されていません(他の同様の状況でも同様です)。
だから私の仮定は正しいですか?そうでない場合、STMはどのように機能を再適用しますか?それが正しければ、いつ副作用が発生する可能性があるのか、いつ発生しないのかをドキュメントに頼ることができないのは事実ですか?