maam-0.1.0.0: A monadic framework for abstract interpretation.

Safe HaskellNone
LanguageHaskell2010

FP.Monads

Contents

Synopsis

Documentation

newtype ID a Source

Constructors

ID 

Fields

runID :: a
 

Instances

Monad ID 
Bind ID 
Applicative ID 
Product ID 
FunctorM ID 
Functor ID 
Unit ID 
Inject ID 
Commute ID ListSet 
MonadStep ID ID 
Functorial * JoinLattice ID 
Functorial * Monoid ID 
Functorial * Pretty ID 
Isomorphism2 * (PSΣ val lτ dτ ψ) (PSΣ' val lτ dτ ψ) 
Isomorphism2 * (FIΣ val lτ dτ ψ) (FIΣ' val lτ dτ ψ) 
Isomorphism2 * (FSΣ val lτ dτ ψ) (FSΣ' val lτ dτ ψ) 
Morphism2 * (PSΣ val lτ dτ ψ) (PSΣ' val lτ dτ ψ) 
Morphism2 * (PSΣ' val lτ dτ ψ) (PSΣ val lτ dτ ψ) 
Morphism2 * (FIΣ val lτ dτ ψ) (FIΣ' val lτ dτ ψ) 
Morphism2 * (FIΣ' val lτ dτ ψ) (FIΣ val lτ dτ ψ) 
Morphism2 * (FSΣ val lτ dτ ψ) (FSΣ' val lτ dτ ψ) 
Morphism2 * (FSΣ' val lτ dτ ψ) (FSΣ val lτ dτ ψ) 
Eq a => Eq (ID a) 
Ord a => Ord (ID a) 
JoinLattice a => JoinLattice (ID a) 
Monoid a => Monoid (ID a) 
PartialOrder a => PartialOrder (ID a) 
Pretty a => Pretty (ID a) 

newtype IDT m a Source

Constructors

IDT 

Fields

runIDT :: m a
 

mapError :: Functor m => (e1 -> e2) -> ErrorT e1 m a -> ErrorT e2 m a Source

type Reader r = ReaderT r ID Source

runReader :: r -> Reader r a -> a Source

execWriterT :: Functor m => WriterT o m a -> m o Source

mapOutput :: Functor m => (o1 -> o2) -> WriterT o1 m a -> WriterT o2 m a Source

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

evalStateT :: Functor m => s -> StateT s m a -> m a Source

execStateT :: Functor m => s -> StateT s m a -> m s Source

mapStateT :: Functor m => (s1 -> s2) -> (s2 -> s1) -> StateT s1 m a -> StateT s2 m a Source

type State s = StateT s ID Source

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

evalState :: s -> State s a -> a Source

execState :: s -> State s a -> s Source

stateCommute :: Functor m => StateT s1 (StateT s2 m) ~> StateT s2 (StateT s1 m) Source

stateLens :: Monad m => Lens s1 s2 -> StateT s2 m ~> StateT s1 m Source

stateLensE :: (MonadStateE s1 m, Monad m) => Lens s1 s2 -> StateT s2 m ~> m Source

newtype AddStateT s12 s1 m a Source

Constructors

AddStateT 

Fields

runAddStateT :: StateT s1 m a
 

Instances

(Functor m, MonadState s2 m, Isomorphism s12 (s1, s2)) => MonadState s12 (AddStateT * s12 s1 m) 
(Functor m, MonadStateE s2 m, Isomorphism s12 (s1, s2)) => MonadStateE s12 (AddStateT * s12 s1 m) 
(Functor m, MonadStateI s2 m, Isomorphism s12 (s1, s2)) => MonadStateI s12 (AddStateT * s12 s1 m) 
(MonadWriter o m, Monoid o) => MonadWriter o (AddStateT k s12 s1 m) 
(MonadWriter o m, Monoid o) => MonadWriterE o (AddStateT k s12 s1 m) 
(MonadWriter o m, Monoid o) => MonadWriterI o (AddStateT k s12 s1 m) 
MonadReader r m => MonadReader r (AddStateT k s12 s1 m) 
MonadReaderE r m => MonadReaderE r (AddStateT k s12 s1 m) 
MonadReaderI r m => MonadReaderI r (AddStateT k s12 s1 m) 
MonadPlus m => MonadPlus (AddStateT k s12 s1 m) 
MonadConcat m => MonadConcat (AddStateT k s12 s1 m) 
MonadZero m => MonadZero (AddStateT k s12 s1 m) 
Monad m => Monad (AddStateT k s12 s1 m) 
Bind m => Bind (AddStateT k s12 s1 m) 
Monad m => Applicative (AddStateT k s12 s1 m) 
Monad m => Product (AddStateT k s12 s1 m) 
Functor m => Functor (AddStateT k s12 s1 m) 
Unit m => Unit (AddStateT k s12 s1 m) 
(MonadStep ς m, Functor m) => MonadStep ((:.:) * * ς ((,) 𝓈1)) (AddStateT k 𝓈12 𝓈1 m) 

mergeState :: Functor m => StateT s1 (StateT s2 m) a -> StateT (s1, s2) m a Source

splitState :: Functor m => StateT (s1, s2) m a -> StateT s1 (StateT s2 m) a Source

runRWST :: Functor m => r -> s -> RWST r o s m a -> m (a, o, s) Source

rwsCommute :: (Monad m, Monoid o1, Monoid o2) => RWST r1 o1 s1 (RWST r2 o2 s2 m) ~> RWST r2 o2 s2 (RWST r1 o1 s1 m) Source

PROOF of: left unit := return x >>= k = k x {{{

PROOF of: right unit := aM >>= return = aM {{{

PROOF of: associativity := (aM >>= k1) >>= k2 = { x aM ; k1 x>= k2 } {{{

evalKonT :: Unit m => KonT r m r -> m r Source

type Kon r = KonT r ID Source

runKon :: Kon r a -> (a -> r) -> r Source

evalKon :: Kon r r -> r Source

runOpaqueKonTWith :: k r m a -> OpaqueKonT k r m a -> m r Source

makeMetaKonT :: Morphism3 (k r) (KFun r) => ((a -> m r) -> m r) -> OpaqueKonT k r m a Source

runMetaKonT :: Morphism3 (KFun r) (k r) => OpaqueKonT k r m a -> (a -> m r) -> m r Source

runMetaKonTWith :: Morphism3 (KFun r) (k r) => (a -> m r) -> OpaqueKonT k r m a -> m r Source

evalOpaqueKonT :: (Unit m, Morphism3 (KFun r) (k r)) => OpaqueKonT k r m r -> m r Source

type OpaqueKon k r = OpaqueKonT k r ID Source

makeOpaqueKon :: (k r ID a -> r) -> OpaqueKon k r a Source

makeMetaKon :: Morphism3 (k r) (KFun r) => ((a -> r) -> r) -> OpaqueKon k r a Source

runOpaqueKon :: OpaqueKon k r a -> k r ID a -> r Source

runMetaKon :: Morphism3 (KFun r) (k r) => OpaqueKon k r a -> (a -> r) -> r Source

evalOpaqueKon :: Morphism3 (KFun r) (k r) => OpaqueKon k r r -> r Source

metaKonT :: Morphism3 (KFun r) (k r) => OpaqueKonT k r m ~> KonT r m Source

opaqueKonT :: Morphism3 (k r) (KFun r) => KonT r m ~> OpaqueKonT k r m Source

class Balloon k r | k -> r where Source

Methods

inflate :: Monad m => k r m ~> k r (OpaqueKonT k r m) Source

deflate :: Monad m => k r (OpaqueKonT k r m) ~> k r m Source

Instances

readerRWSCommute :: (Monad m, Monoid o) => ReaderT r1 (RWST r2 o s m) ~> RWST r2 o s (ReaderT r1 m) Source

rwsReaderCommute :: (Monad m, Monoid o) => RWST r1 o s (ReaderT r2 m) ~> ReaderT r2 (RWST r1 o s m) Source

writerRWSCommute :: (Monad m, Monoid o1, Monoid o2) => WriterT o1 (RWST r o2 s m) ~> RWST r o2 s (WriterT o1 m) Source

rwsWriterCommute :: (Monad m, Monoid o1, Monoid o2) => RWST r o1 s (WriterT o2 m) ~> WriterT o2 (RWST r o1 s m) Source

stateRWSCommute :: (Monad m, Monoid o) => StateT s1 (RWST r o s2 m) ~> RWST r o s2 (StateT s1 m) Source

rwsStateCommute :: (Monad m, Monoid o) => RWST r o s1 (StateT s2 m) ~> StateT s2 (RWST r o s1 m) Source

stateKonCommute :: StateT s (KonT (r, s) m) ~> KonT r (StateT s m) Source

konStateCommute :: KonT r (StateT s m) ~> StateT s (KonT (r, s) m) Source