The strict state-transformer monad. A computation of type `ST s a` transforms an internal state indexed by `s`, and returns a value of type `a`.
The strict state-transformer monad. A computation of type ST s a
transforms an internal state indexed by s
, and returns a value of type a
. The s
parameter is either
• an uninstantiated type variable (inside invocations of runST
), or
• RealWorld
(inside invocations of stToIO
).
It serves to keep the internal states of different invocations of runST
separate from each other and from invocations of stToIO
.
The >>=
and >>
operations are strict in the state (though not in values stored in the state). For example,
runST (writeSTRef _|_ v >>= f) = _|_