module AOP.Internal.AOPMonad (
AOPMonad(..),
MonadDeploy(..),
) where
import AOP.Internal.JoinpointModel
import AOP.Internal.OpenApp
class (Typeable1Monad m, OpenApp m) => AOPMonad m where
deploy :: LessGen (a -> b) (c -> m d) => Aspect m a b c d -> m ()
undeploy :: LessGen (a -> b) (c -> m d) => Aspect m a b c d -> m ()
class (Typeable1Monad m, Typeable1Monad (t m)) => MonadDeploy t m where
deployInEnv :: LessGen (a -> b) (c -> t m d) =>
Aspect (t m) a b c d ->
AspectEnv (t m) -> m (AspectEnv (t m))
undeployInEnv :: LessGen (a -> b) (c -> t m d) =>
Aspect (t m) a b c d ->
AspectEnv (t m) -> m (AspectEnv (t m))