在FP中最重要的是保持引用的透明性,所以必须纯函数式子编程,在Haskell和scalaz(参考haskell的版本),使用了ST MONAD来方式来确保副作用的安全使用
它使用 S => (S,A)的技巧(很多人把它归为欺骗的技巧'),将可变变量(A)的引用透明化,同时ST确保在组合中(flatmap) tranform monad,确保同一时刻只有一个状态改变,所以确保了read,write等的安全
这个让我想起两个知识点 Lazy 和 state,ST的作风很像STATE MONAD,当然这些都是我的见解
具体可以看看
点击打开链接