macaw-base
Safe HaskellNone
LanguageHaskell2010

Data.Macaw.Utils.IncComp

Description

This defines types for performing a computation that log progress incrementally before completing.

Synopsis

Documentation

data IncComp l r Source #

IncComp l r is an incremental computation.

This is effectively a lazy list of l values terminated by an r value.

Constructors

IncCompLog !l (IncComp l r)

Log a message

IncCompDone !r

Computation complete.

processIncCompLogs :: Monad m => (l -> m ()) -> IncComp l r -> m r Source #

newtype IncCompM l r a Source #

Continuation monad that yields an incremental computation.

Constructors

IncCompTM 

Fields

Instances

Instances details
Applicative (IncCompM l r) Source # 
Instance details

Defined in Data.Macaw.Utils.IncComp

Methods

pure :: a -> IncCompM l r a #

(<*>) :: IncCompM l r (a -> b) -> IncCompM l r a -> IncCompM l r b #

liftA2 :: (a -> b -> c) -> IncCompM l r a -> IncCompM l r b -> IncCompM l r c #

(*>) :: IncCompM l r a -> IncCompM l r b -> IncCompM l r b #

(<*) :: IncCompM l r a -> IncCompM l r b -> IncCompM l r a #

Functor (IncCompM l r) Source # 
Instance details

Defined in Data.Macaw.Utils.IncComp

Methods

fmap :: (a -> b) -> IncCompM l r a -> IncCompM l r b #

(<$) :: a -> IncCompM l r b -> IncCompM l r a #

Monad (IncCompM l r) Source # 
Instance details

Defined in Data.Macaw.Utils.IncComp

Methods

(>>=) :: IncCompM l r a -> (a -> IncCompM l r b) -> IncCompM l r b #

(>>) :: IncCompM l r a -> IncCompM l r b -> IncCompM l r b #

return :: a -> IncCompM l r a #

liftIncComp :: (l -> k) -> IncComp l a -> IncCompM k r a Source #

Lift a incremental computation to the monad with the given modification

liftFoldIncComp :: (l -> IncComp k r -> IncComp k r) -> IncComp l a -> IncCompM k r a Source #

Allows a incremental computation to be merged into an existing one by folding over events.

joinIncComp :: (l -> k) -> (a -> IncComp k b) -> IncComp l a -> IncComp k b Source #

incCompLog :: l -> IncCompM l r () Source #

Log a warning

incCompDone :: r -> IncCompM l r a Source #

Terminate computation early.

newtype ContT (r :: k) (m :: k -> Type) a #

The continuation monad transformer. Can be used to add continuation handling to any type constructor: the Monad instance and most of the operations do not require m to be a monad.

ContT is not a functor on the category of monads, and many operations cannot be lifted through it.

Constructors

ContT 

Fields

Instances

Instances details
MonadAccum w m => MonadAccum w (ContT r m)

The continuation can see, and interact with, the accumulated value.

Since: mtl-2.3

Instance details

Defined in Control.Monad.Accum

Methods

look :: ContT r m w #

add :: w -> ContT r m () #

accum :: (w -> (a, w)) -> ContT r m a #

MonadReader r' m => MonadReader r' (ContT r m) 
Instance details

Defined in Control.Monad.Reader.Class

Methods

ask :: ContT r m r' #

local :: (r' -> r') -> ContT r m a -> ContT r m a #

reader :: (r' -> a) -> ContT r m a #

MonadSelect r' m => MonadSelect r' (ContT r m)

The continuation describes a way of choosing a 'search' or 'ranking' strategy for r, based on a 'ranking' using r', given any a. We then get a 'search' strategy for r.

Since: mtl-2.3

Instance details

Defined in Control.Monad.Select

Methods

select :: ((a -> r') -> a) -> ContT r m a #

MonadState s m => MonadState s (ContT r m) 
Instance details

Defined in Control.Monad.State.Class

Methods

get :: ContT r m s #

put :: s -> ContT r m () #

state :: (s -> (a, s)) -> ContT r m a #

MonadTrans (ContT r) 
Instance details

Defined in Control.Monad.Trans.Cont

Methods

lift :: Monad m => m a -> ContT r m a #

MonadFail m => MonadFail (ContT r m) 
Instance details

Defined in Control.Monad.Trans.Cont

Methods

fail :: String -> ContT r m a #

MonadIO m => MonadIO (ContT r m) 
Instance details

Defined in Control.Monad.Trans.Cont

Methods

liftIO :: IO a -> ContT r m a #

Applicative (ContT r m) 
Instance details

Defined in Control.Monad.Trans.Cont

Methods

pure :: a -> ContT r m a #

(<*>) :: ContT r m (a -> b) -> ContT r m a -> ContT r m b #

liftA2 :: (a -> b -> c) -> ContT r m a -> ContT r m b -> ContT r m c #

(*>) :: ContT r m a -> ContT r m b -> ContT r m b #

(<*) :: ContT r m a -> ContT r m b -> ContT r m a #

Functor (ContT r m) 
Instance details

Defined in Control.Monad.Trans.Cont

Methods

fmap :: (a -> b) -> ContT r m a -> ContT r m b #

(<$) :: a -> ContT r m b -> ContT r m a #

Monad (ContT r m) 
Instance details

Defined in Control.Monad.Trans.Cont

Methods

(>>=) :: ContT r m a -> (a -> ContT r m b) -> ContT r m b #

(>>) :: ContT r m a -> ContT r m b -> ContT r m b #

return :: a -> ContT r m a #

MonadThrow m => MonadThrow (ContT r m) 
Instance details

Defined in Control.Monad.Catch

Methods

throwM :: (HasCallStack, Exception e) => e -> ContT r m a #

MonadCont (ContT r m)

Since: mtl-2.3.1

Instance details

Defined in Control.Monad.Cont.Class

Methods

callCC :: ((a -> ContT r m b) -> ContT r m a) -> ContT r m a #

PrimMonad m => PrimMonad (ContT r m) 
Instance details

Defined in Control.Monad.Primitive

Associated Types

type PrimState (ContT r m) 
Instance details

Defined in Control.Monad.Primitive

type PrimState (ContT r m) = PrimState m

Methods

primitive :: (State# (PrimState (ContT r m)) -> (# State# (PrimState (ContT r m)), a #)) -> ContT r m a

Generic (ContT r m a) 
Instance details

Defined in Control.Monad.Trans.Cont

Associated Types

type Rep (ContT r m a) 
Instance details

Defined in Control.Monad.Trans.Cont

type Rep (ContT r m a) = D1 ('MetaData "ContT" "Control.Monad.Trans.Cont" "transformers-0.6.1.0-bca4" 'True) (C1 ('MetaCons "ContT" 'PrefixI 'True) (S1 ('MetaSel ('Just "runContT") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ((a -> m r) -> m r))))

Methods

from :: ContT r m a -> Rep (ContT r m a) x #

to :: Rep (ContT r m a) x -> ContT r m a #

Wrapped (ContT r m a) 
Instance details

Defined in Control.Lens.Wrapped

Associated Types

type Unwrapped (ContT r m a) 
Instance details

Defined in Control.Lens.Wrapped

type Unwrapped (ContT r m a) = (a -> m r) -> m r

Methods

_Wrapped' :: Iso' (ContT r m a) (Unwrapped (ContT r m a))

t ~ ContT r' m' a' => Rewrapped (ContT r m a) t 
Instance details

Defined in Control.Lens.Wrapped

type PrimState (ContT r m) 
Instance details

Defined in Control.Monad.Primitive

type PrimState (ContT r m) = PrimState m
type Rep (ContT r m a) 
Instance details

Defined in Control.Monad.Trans.Cont

type Rep (ContT r m a) = D1 ('MetaData "ContT" "Control.Monad.Trans.Cont" "transformers-0.6.1.0-bca4" 'True) (C1 ('MetaCons "ContT" 'PrefixI 'True) (S1 ('MetaSel ('Just "runContT") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ((a -> m r) -> m r))))
type Unwrapped (ContT r m a) 
Instance details

Defined in Control.Lens.Wrapped

type Unwrapped (ContT r m a) = (a -> m r) -> m r