Safe HaskellSafe-Infered

AOP.Internal.AOTType

Synopsis

Documentation

newtype AOT m a

This module defines the AOT type. It is a separate module to avoid circular dependencies between modules.

Constructors

AOT 

Fields

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

Instances

MonadTrans AOT 
MonadState s m => MonadState s (AOT m) 
MonadWriter w m => MonadWriter w (AOT m) 
MonadReader r m => MonadReader r (AOT m) 
MonadError s m => MonadError s (AOT m) 
Typeable1Monad m => OpenApp (->) (AOT m)

Every regular functions is tagged with the same default tag.

Typeable1Monad m => OpenApp Function (AOT m)

Function is a wrapper to add a notion of identity based on tags.

Monad m => Monad (AOT m)

Monadic bind and return operations for a transformed monad. The aspect environment is wrapped or passed around as in a state monad transformer.

Typeable1Monad m => Typeable1 (AOT m)

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

(MonadEL m, Typeable1Monad (AOT m)) => MonadEL (AOT m)

Interaction with AOT

MonadIO m => MonadIO (AOT m) 
MonadCont m => MonadCont (AOT m) 
(Typeable1Monad m, MonadDeploy 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.