Safe HaskellSafe-Infered

AOP.Internal.AOT_secure_privileged

Synopsis

Documentation

data AOT_sp m a

Instances

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

Every regular functions is tagged with the same default tag.

Typeable1Monad m => OpenApp Function (AOT_sp m)

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

Monad m => Monad (AOT_sp 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_sp m)

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

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

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

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

runAOT_sp :: Monad m => SP (AOT_sp m) -> AOT_sp m a -> m a

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

wappt_sp :: (Typeable1Monad m, PolyTypeable (a -> AOT_sp m b)) => (a -> AOT_sp m b) -> FunctionTag -> a -> AOT_sp m b

Implementation of woven application for AOT_sp, 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.