Clean-0.6: A light, clean and powerful utility library

Safe HaskellNone

Clean.Monad

Contents

Synopsis

Documentation

The basic Monad interface

class Applicative m => Monad m whereSource

Methods

join :: m (m a) -> m aSource

(>>=) :: m a -> (a -> m b) -> m bSource

Instances

Monad [] 
Monad IO 
Monad Tree 
Monad Interleave 
Monad Id 
Monad ((->) a) 
Monad (Either a) 
Monoid w => Monad ((,) w) 
Monad (Const a) 
MonadFix m => Monad (Backwards m) 
(Monad f, Contravariant f, Monad g) => Monad (Compose f g) 
Monad m => Monad (ContT r m) 
(Monoid w, Monad m) => Monad (WriterT w m) 
Monad m => Monad (ReaderT r m) 
Monad m => Monad (StateT s m) 
Monad m => Monad (Kleisli m a) 

class Monad m => MonadFix m whereSource

Methods

mfix :: (a -> m a) -> m aSource

Instances

MonadFix [] 
MonadFix Id 
MonadFix ((->) b) 
(Monoid w, MonadFix m) => MonadFix (WriterT w m) 
MonadFix m => MonadFix (ReaderT r m) 
MonadFix m => MonadFix (StateT s m) 

class MonadTrans t whereSource

Methods

lift :: Monad m => m a -> t m aSource

internal :: Monad m => (forall c. m (c, a) -> m (c, b)) -> t m a -> t m bSource

(=<<) :: Monad m => (a -> m b) -> m a -> m bSource

(>>) :: Applicative f => f a1 -> f a -> f aSource

return :: Unit f => a -> f aSource

Common monads

The State Monad

class Monad m => MonadState s m whereSource

Methods

get :: m sSource

put :: s -> m ()Source

modify :: (s -> s) -> m ()Source

Instances

(Monoid w, MonadState r m) => MonadState r (WriterT w m) 
MonadState s m => MonadState s (ReaderT r m) 
Monad m => MonadState s (StateT s m) 

newtype StateT s m a Source

A simple State Monad

Constructors

StateT 

Fields

runStateT :: s -> m (s, a)
 

Instances

MonadWriter w m => MonadWriter w (StateT s m) 
MonadReader r m => MonadReader r (StateT s m) 
Monad m => MonadState s (StateT s m) 
MonadTrans (StateT s) 
Unit m => Unit (StateT s m) 
Monad m => Monad (StateT s m) 
Monad m => Applicative (StateT s m) 
Monad m => Functor (StateT s m) 
MonadCont m => MonadCont (StateT s m) 
MonadFix m => MonadFix (StateT s m) 
Ring (m (s, a)) => Ring (StateT s m a) 
Monoid (m (s, a)) => Monoid (StateT s m a) 
Semigroup (m (s, a)) => Semigroup (StateT s m a) 

type State s a = StateT s Id aSource

evalStateT :: Functor f => StateT a f b -> a -> f bSource

execStateT :: Functor f => StateT b f b1 -> b -> f bSource

runState :: State s a -> s -> (s, a)Source

execState :: State s a -> s -> sSource

evalState :: State s a -> s -> aSource

The Reader monad

class Monad m => MonadReader r m whereSource

Methods

ask :: m rSource

local :: (r -> r) -> m a -> m aSource

Instances

(Monoid w, MonadReader r m) => MonadReader r (WriterT w m) 
Monad m => MonadReader r (ReaderT r m) 
MonadReader r m => MonadReader r (StateT s m) 

newtype ReaderT r m a Source

A simple Reader monad

Constructors

ReaderT 

Fields

runReaderT :: r -> m a
 

Instances

MonadWriter w m => MonadWriter w (ReaderT r m) 
Monad m => MonadReader r (ReaderT r m) 
MonadState s m => MonadState s (ReaderT r m) 
MonadTrans (ReaderT r) 
Monad m => Unit (ReaderT r m) 
Monad m => Monad (ReaderT r m) 
Monad m => Applicative (ReaderT r m) 
Monad m => Functor (ReaderT r m) 
MonadCont m => MonadCont (ReaderT r m) 
MonadFix m => MonadFix (ReaderT r m) 
Ring (m a) => Ring (ReaderT r m a) 
Monoid (m a) => Monoid (ReaderT r m a) 
Semigroup (m a) => Semigroup (ReaderT r m a) 

type Reader r a = ReaderT r Id aSource

The Writer monad

class (Monad m, Monoid w) => MonadWriter w m whereSource

Methods

tell :: w -> m ()Source

listen :: m a -> m (w, a)Source

censor :: m (a, w -> w) -> m aSource

Instances

(Monad m, Monoid w) => MonadWriter w (WriterT w m) 
MonadWriter w m => MonadWriter w (ReaderT r m) 
MonadWriter w m => MonadWriter w (StateT s m) 

newtype WriterT w m a Source

A simple Writer monad

Constructors

WriterT 

Fields

runWriterT :: m (w, a)
 

Instances

(Monad m, Monoid w) => MonadWriter w (WriterT w m) 
(Monoid w, MonadReader r m) => MonadReader r (WriterT w m) 
(Monoid w, MonadState r m) => MonadState r (WriterT w m) 
Monoid w => MonadTrans (WriterT w) 
(Monoid w, Monad m) => Unit (WriterT w m) 
(Monoid w, Monad m) => Monad (WriterT w m) 
(Monoid w, Monad m) => Applicative (WriterT w m) 
(Monoid w, Monad m) => Functor (WriterT w m) 
(Monoid w, MonadFix m) => MonadFix (WriterT w m) 
Ring (m (w, a)) => Ring (WriterT w m a) 
Monoid (m (w, a)) => Monoid (WriterT w m a) 
Semigroup (m (w, a)) => Semigroup (WriterT w m a) 

type Writer w a = WriterT w Id aSource

runWriter :: WriterT w Id a -> (w, a)Source

The Continuation monad

class Monad m => MonadCont m whereSource

A simple continuation monad implementation

Methods

callCC :: ((a -> m b) -> m a) -> m aSource

Instances

newtype ContT r m a Source

Constructors

ContT 

Fields

runContT :: (a -> m r) -> m r
 

Instances

MonadTrans (ContT r) 
Unit m => Unit (ContT r m) 
Monad m => Monad (ContT r m) 
Monad m => Applicative (ContT r m) 
Monad m => Functor (ContT r m) 
Monad m => MonadCont (ContT r m) 
Ring (m r) => Ring (ContT r m a) 
Monoid (m r) => Monoid (ContT r m a) 
Semigroup (m r) => Semigroup (ContT r m a) 

type Cont r a = ContT r Id aSource

evalContT :: Unit m => ContT r m r -> m rSource

evalCont :: ContT a Id a -> aSource