Stability  experimental 

Maintainer  Sebastian Fischer <mailto:sebf@informatik.unikiel.de> 
This library provides an interface to monads that support explicit sharing. A project website with tutorials can be found at http://sebfisch.github.com/explicitsharing.
Documentation
module Control.Monad
Classes
Interface of monads that support explicit sharing.
Interface to transform nested monadic data types. The provided
function trans
is supposed to map the given function on every
monadic argument. The result of trans
may be of the same type as
the argument but can also be of a different type, e.g. to convert a
value with nested monadic arguments to a corresponding value
without.
We provide instances of the Trans
class for some predefined
Haskell types. For flat types the function trans
just returns its
argument which has no arguments to which the given function could
be applied.
Monad m => Trans m Double Double  
Monad m => Trans m Float Float  
Monad m => Trans m Char Char  
Monad m => Trans m Int Int  
Monad m => Trans m Bool Bool  
(Monad m, Trans m a a) => Trans m [m a] [a]  An instance for lists with monadic elements that lifts all monadic effects to the top level and yields a list with nonmonadic elements. 
(Monad m, Trans m a a) => Trans m [m a] [m a]  An instance for lists with monadic elements. 
Monad m => Trans m [Double] [Double]  
Monad m => Trans m [Float] [Float]  
Monad m => Trans m [Char] [Char]  
Monad m => Trans m [Int] [Int]  
Monad m => Trans m [Bool] [Bool]  
(Monad m, Trans m a b) => Trans m [a] (List m b)  This instance enables the function 
(Monad m, Trans m a b) => Trans m (List m a) [b]  This instance enables the function 
(Monad m, Trans m a b) => Trans m (List m a) (List m b)  This instance allows to use nested monadic lists as argument to the

eval :: (Monad m, Trans m a b) => a > m bSource
Lifts all monadic effects in nested monadic values to the top
level. If m
is a monad for nondeterminism and the argument a
data structure with nested nondeterminism then the result
corresponds to the normal form of the argument.
Monad transformer
Continuationbased, storepassing implementation of explicit
sharing. It is an inlined version of ContT (ReaderT Store m)
where the result type of continuations is polymorphic.