Variablen (STRefs)

import Data.STRef; import Control.Monad.ST
main :: ST s ()
main = do
    x <- newSTRef 7
    writeSTRef x 8
    a <- readSTRef x
    return a
Lesen und Schreiben sind ST-Aktionen (nicht IO!), weil sie nur den Hauptspeicherinhalt ändern.


ausführen mit beschränkten Nebenwirkungen

runST :: ( forall s . ST s a ) -> a


vergleiche: es gibt kein runIO :: IO a -> a



Johannes Waldmann 2010-01-25