Safe HaskellSafe-Infered

AOP.Internal.NIAOT

Synopsis

Documentation

data NIAOT t m a

Non-Interference AOT transformer. The NIAOT is like the AOT transformer, but it enforces a splitting on the monadic stack. Base code and aspect code have access to a different part of the stack.

The splitting is done by assuming the stack is constructed by a transformer t on top of a monad m.

Instances

MonadState s (t m) => MonadState s (NIAOT t m) 
MonadWriter w (t m) => MonadWriter w (NIAOT t m) 
(Monad m, MonadReader r (t m)) => MonadReader r (NIAOT t m) 
MonadError s (t m) => MonadError s (NIAOT t m) 
Typeable1Monad (t m) => OpenApp (->) (NIAOT t m)

Open application of regular functions.

Typeable1Monad (t m) => OpenApp Function (NIAOT t m)

Open application of tagged functions.

Monad (t m) => Monad (NIAOT t m)

Monadic bind and return functions of the transformed monad.

Typeable1Monad (t m) => Typeable1 (NIAOT t m)

Support for PolyTypeable

MonadIO (t m) => MonadIO (NIAOT t m) 
MonadCont (t m) => MonadCont (NIAOT t m) 
Typeable1Monad (t m) => AOPMonad (NIAOT t m)

NIAOT performs top-level deployment of aspects

runNIAOT :: Monad (t m) => NIAOT t m a -> t m a

Gets the underlying computation

niLift :: Monad (t m) => t m a -> NIAOT t m a

Lift a computation from the underlying monad into NIAOT.