effective-aspects-mzv-0.1.0.1: A monadic embedding of aspect oriented programming, using "Monads, Zippers and Views" instead of mtl.

Safe HaskellNone

AOP.Internal.PointcutLanguage

Synopsis

Documentation

pcCall :: (Typeable1Monad m, PolyTypeable (a -> b)) => (a -> b) -> PC m a bSource

Built-in pointcuts pcCall and pcType, and pointcut combinators pcAnd, pcOr and pcNot. Using typeclasses, pointcuts are open for new definitions of functions, like the Function wrapper. We also define pcSeq, that matches a sequence of two join points.

pcType :: (Typeable1Monad m, PolyTypeable (a -> b)) => (a -> b) -> PC m a bSource

pcAnd :: (PCAnd m a1 b1 a2 b2 pct, PCAndCtx m a1 b1 a2 b2 pct) => PC m a1 b1 -> pct m a2 b2 -> PC m a1 b1Source

pcTag :: (Typeable1Monad m, PolyTypeable (a -> b)) => FunctionTag -> PC m a' b'Source

pcOr :: (Typeable1Monad m, LeastGen (a1 -> b1) (a2 -> b2) (agen -> bgen)) => PC m a1 b1 -> PC m a2 b2 -> PC m agen bgenSource

Logical Or pointcut combinator.

pcNot :: Typeable1Monad m => PC m a1 b1 -> PC m a2 b2Source

Logical Not pointcut combinator.