Safe Haskell | Safe-Infered |
---|
AOP.Internal.Joinpoint
- data Jp a b = PolyTypeable (a -> b) => Jp (a -> b) FunctionTag a
- newjp :: PolyTypeable (a -> b) => (a -> b) -> FunctionTag -> a -> Jp a b
- compareFun :: t -> FunctionTag -> Jp a b -> Bool
- compareType :: PolyTypeable (a -> b) => TypeRep -> Jp a b -> Bool
- getJpArg :: Jp a b -> a
Documentation
data Jp a b
Join points are function applications. We store the function and the argument. | We add a FunctionTag value to use for function equality (see module Function)
Constructors
PolyTypeable (a -> b) => Jp (a -> b) FunctionTag a |
newjp :: PolyTypeable (a -> b) => (a -> b) -> FunctionTag -> a -> Jp a b
Creates a join point with given function, tag, and argument
compareFun :: t -> FunctionTag -> Jp a b -> Bool
Comparing identity of functions: | When given a join point with a regular function (signaled by the default tag) | then we use StableNames for comparison. If the functions are wrapped, | we compare the tags
compareType :: PolyTypeable (a -> b) => TypeRep -> Jp a b -> Bool
Compare types to see if type representation t is less general | than the type of the function associated to the join point