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) = _|_