persistent-refs-0.4: Haskell references backed by an IntMap for persistence and reversibility.

Copyright(c) Adam C. Foltzer 2013
LicenseBSD3
Maintaineracfoltzer@gmail.com
Stabilityexperimental
Portabilitynon-portable (requires rank-2 types for runST)
Safe HaskellNone
LanguageHaskell98

Control.Monad.ST.Persistent

Contents

Description

This library provides support for a persistent version of the ST monad. Internally, references are backed by a IntMap, rather than being mutable variables on the heap. This decreases performance, but can be useful in certain settings, particularly those involving backtracking.

Synopsis

The Persistent ST Monad

type ST s = STT s Identity #

A persistent version of the ST monad.

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

Run a computation that uses persistent references, and return a pure value. The rank-2 type offers similar guarantees to runST.

The Persistent ST Monad transformer

data STT s m a #

Instances

MonadTrans (STT s) # 

Methods

lift :: Monad m => m a -> STT s m a #

Monad m => Monad (STT s m) # 

Methods

(>>=) :: STT s m a -> (a -> STT s m b) -> STT s m b #

(>>) :: STT s m a -> STT s m b -> STT s m b #

return :: a -> STT s m a #

fail :: String -> STT s m a #

Functor m => Functor (STT s m) # 

Methods

fmap :: (a -> b) -> STT s m a -> STT s m b #

(<$) :: a -> STT s m b -> STT s m a #

Monad m => Applicative (STT s m) # 

Methods

pure :: a -> STT s m a #

(<*>) :: STT s m (a -> b) -> STT s m a -> STT s m b #

(*>) :: STT s m a -> STT s m b -> STT s m b #

(<*) :: STT s m a -> STT s m b -> STT s m a #

MonadIO m => MonadIO (STT s m) # 

Methods

liftIO :: IO a -> STT s m a #

MonadPlus m => Alternative (STT s m) # 

Methods

empty :: STT s m a #

(<|>) :: STT s m a -> STT s m a -> STT s m a #

some :: STT s m a -> STT s m [a] #

many :: STT s m a -> STT s m [a] #

MonadPlus m => MonadPlus (STT s m) # 

Methods

mzero :: STT s m a #

mplus :: STT s m a -> STT s m a -> STT s m a #

runSTT :: Monad m => (forall s. STT s m a) -> m a #

Run a computation that uses persistent references, and return a pure value. The rank-2 type offers similar guarantees to runST.