effective-aspects- A monadic embedding of aspect oriented programming

Safe HaskellNone




data AOT m a Source


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) 
Functor 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 #.