open-witness-0.4.0.1: open witnesses

Safe HaskellNone
LanguageHaskell2010

Data.OpenWitness.ST

Contents

Description

This is an approximate re-implementation of Control.Monad.ST and Data.STRef using open witnesses.

Synopsis

The ST Monad

type ST s = StateT (WitnessDict (OpenWitness s)) (OW s) #

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

fixST :: (a -> ST s a) -> ST s a #

Converting ST to OW and IO

stToOW :: ST s a -> OW s a #

data RealWorld #

The s type for running OW in IO.

stToIO :: ST RealWorld a -> IO a #

STRefs

type STRef s = OpenWitness s #

newSTRef :: a -> ST s (STRef s a) #

readSTRef :: STRef s a -> ST s a #

writeSTRef :: forall s a. STRef s a -> a -> ST s () #

modifySTRef :: forall s a. STRef s a -> (a -> a) -> ST s () #