Safe Haskell | None |
---|---|
Language | Haskell98 |
Derived from work by Gerrit vd Geest, but with searching structures for predicates to avoid explosion of search space during resolution.
- class IsConstraint c where
- cnstrRequiresSolve :: c -> Bool
- class (CHRMatchable env c subst, VarExtractable c, VarUpdatable c subst, Typeable c, Serialize c, TTKeyable c, IsConstraint c, Ord c, Ord (TTKey c), PP c, PP (TTKey c)) => IsCHRConstraint env c subst
- data CHRConstraint env subst = forall c . (IsCHRConstraint env c subst, TTKey (CHRConstraint env subst) ~ TTKey c, ExtrValVarKey (CHRConstraint env subst) ~ ExtrValVarKey c) => CHRConstraint {
- chrConstraint :: c
- class (CHRCheckable env g subst, VarExtractable g, VarUpdatable g subst, Typeable g, Serialize g, PP g) => IsCHRGuard env g subst
- data CHRGuard env subst = forall g . (IsCHRGuard env g subst, ExtrValVarKey (CHRGuard env subst) ~ ExtrValVarKey g) => CHRGuard {
- chrGuard :: g
- class CHREmptySubstitution subst where
- chrEmptySubst :: subst
- class (TTKeyable x, TTKey x ~ CHRMatchableKey subst) => CHRMatchable env x subst where
- chrMatchTo :: env -> subst -> x -> x -> Maybe subst
- type family CHRMatchableKey subst :: *
- class CHRCheckable env x subst where
Documentation
class IsConstraint c where Source
The things a constraints needs to be capable of in order to participate in solving
cnstrRequiresSolve :: c -> Bool Source
Requires solving? Or is just a residue...
IsConstraint (CHRConstraint env subst) Source |
class (CHRMatchable env c subst, VarExtractable c, VarUpdatable c subst, Typeable c, Serialize c, TTKeyable c, IsConstraint c, Ord c, Ord (TTKey c), PP c, PP (TTKey c)) => IsCHRConstraint env c subst Source
(Class alias) API for constraint requirements
data CHRConstraint env subst Source
forall c . (IsCHRConstraint env c subst, TTKey (CHRConstraint env subst) ~ TTKey c, ExtrValVarKey (CHRConstraint env subst) ~ ExtrValVarKey c) => CHRConstraint | |
|
(~) * (CHRMatchableKey subst) (TTKey (CHRConstraint env subst)) => CHRMatchable env (CHRConstraint env subst) subst Source | |
Eq (CHRConstraint env subst) Source | |
Ord (CHRConstraint env subst) Source | |
Show (CHRConstraint env subst) Source | |
PP (CHRConstraint env subst) Source | |
TTKeyable (CHRConstraint env subst) Source | |
Ord (ExtrValVarKey (CHRConstraint env subst)) => VarExtractable (CHRConstraint env subst) Source | |
IsConstraint (CHRConstraint env subst) Source | |
VarUpdatable (CHRConstraint env subst) subst Source | |
(IsCHRConstraint e c s, (~) * (TTKey (CHRConstraint e s)) (TTKey c), (~) * (ExtrValVarKey (CHRConstraint e s)) (ExtrValVarKey c)) => MkSolverConstraint (CHRConstraint e s) c Source |
class (CHRCheckable env g subst, VarExtractable g, VarUpdatable g subst, Typeable g, Serialize g, PP g) => IsCHRGuard env g subst Source
(Class alias) API for guard requirements
data CHRGuard env subst Source
forall g . (IsCHRGuard env g subst, ExtrValVarKey (CHRGuard env subst) ~ ExtrValVarKey g) => CHRGuard | |
|
CHRCheckable env (CHRGuard env subst) subst Source | |
Show (CHRGuard env subst) Source | |
PP (CHRGuard env subst) Source | |
Ord (ExtrValVarKey (CHRGuard env subst)) => VarExtractable (CHRGuard env subst) Source | |
VarUpdatable (CHRGuard env subst) subst Source | |
(IsCHRGuard e g s, (~) * (ExtrValVarKey (CHRGuard e s)) (ExtrValVarKey g)) => MkSolverGuard (CHRGuard e s) g Source |
class CHREmptySubstitution subst where Source
Capability to yield an empty substitution.
chrEmptySubst :: subst Source
class (TTKeyable x, TTKey x ~ CHRMatchableKey subst) => CHRMatchable env x subst where Source
A Matchable participates in the reduction process as a reducable constraint.
chrMatchTo :: env -> subst -> x -> x -> Maybe subst Source
(~) * (CHRMatchableKey subst) (TTKey (CHRConstraint env subst)) => CHRMatchable env (CHRConstraint env subst) subst Source |
type family CHRMatchableKey subst :: * Source
class CHRCheckable env x subst where Source
A Checkable participates in the reduction process as a guard, to be checked.
CHRCheckable env (CHRGuard env subst) subst Source |