Safe HaskellSafe-Infered

AOP.Internal.AOT_secure

Synopsis

Documentation

data AOT_s m a

Instances

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

Every regular functions is tagged with the same default tag.

Typeable1Monad m => OpenApp Function (AOT_s m)

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

Monad m => Monad (AOT_s 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_s m)

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

MonadIO m => MonadIO (AOT_s m) 
(Typeable1Monad m, MonadDeploy AOT_s m) => AOPMonad (AOT_s m)

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

(MonadJPStack m, Typeable1Monad (AOT_s m)) => MonadJPStack (AOT_s m) 

runAOT_s :: Monad m => EPC (AOT_s m) -> AOT_s m a -> m a

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

wappt_s :: (Typeable1Monad m, PolyTypeable (a -> AOT_s m b)) => (a -> AOT_s m b) -> FunctionTag -> a -> AOT_s m b

Implementation of woven application for AOT_s, used in the overloading of #. FunctionTag argument is used for function identity: Wrapped functions are equal when their tags are equal Regular functions share the same tag, and are compared using StableNames.