ST monad是否有特殊的编译器支持?

npo*_*cop 13 monads haskell ghc

ST monad是否在GHC中有特殊的编译器支持?

scl*_*clv 9

你可以在这里看到STRefs的代码:http://haskell.org/ghc/docs/latest/html/libraries/base/src/GHC-STRef.html

它显然使用MutVar#原语.的runST代码同样采用RealWorld#原语和装箱元组.然而,仅仅使用IORefs并且unsafePerformIO您可以ST使用相同的大O属性构建自己的monad,尽管整体效率可能较低.