effective-aspects-mzv-0.1.0.1: A monadic embedding of aspect oriented programming, using "Monads, Zippers and Views" instead of mtl.

Safe HaskellNone

AOP.Internal.AOT

Synopsis

Documentation

data AOT m a Source

Instances

MonadTrans AOT 
(Typeable1Monad m, MonadError s m) => MonadError s (AOT m) 
(Typeable1Monad m, MonadReader r m) => MonadReader r (AOT m) 
MonadState s m => MonadState s (AOT m) 
(Typeable1Monad m, MonadWriter w m) => MonadWriter w (AOT m) 
Monad m => Monad (AOT m) 
Monad m => Functor (AOT m) 
Typeable1Monad m => Typeable1 (AOT m)

Typeable instance so types of computations in AOT can be compared (like in pcCall and pcType)

MonadPlus m => MonadPlus (AOT m) 
MonadIO m => MonadIO (AOT m) 
MonadCont m => MonadCont (AOT m) 
Typeable1Monad m => TaggedApp (AOT m) 
Typeable1Monad m => OpenApp (AOT m)

Every regular functions is tagged with the same default tag.

(Typeable1Monad m, MonadDeploy AOT m) => AOPMonad (AOT m)

The semantics of aspect deployment are defined in the MonadDeploy typeclass. AOT assumes it is on top of an MonadDeploy instance, and uses that functions for aspect deployment.

mkAOT :: (AspectEnv (AOT m) -> m (a, AspectEnv (AOT m))) -> AOT m aSource

runAOT :: Typeable1Monad m => AOT m a -> m aSource

Runs an AOT computation to obtain a computation in the underlying monad

wappt :: (Typeable1Monad m, PolyTypeable (a -> AOT m b)) => FunctionTag -> (a -> AOT m b) -> a -> AOT m bSource

Implementation of woven application for AOT, used in the overloading of #.

run :: AOT m a -> AspectEnv (AOT m) -> m (a, AspectEnv (AOT m))Source

mapAOT :: (m (a, AspectEnv (AOT m)) -> m (b, AspectEnv (AOT m))) -> AOT m a -> AOT m bSource

Like mapStateT, but specialized to work on the same monad.