Node:CHR Declarations, Next:CHR Syntax, Previous:CHR Loading the Library, Up:CHR Library
Declarations in files containing CHR affect the compilation and thus the behavior of the rules at runtime.
The mandatory handler declaration precedes any other CHR specific
code.
Example:
handler minmax.A handler name must be a valid Prolog atom. Per module, only one constraint handler can be defined.
The constraints must be declared before they are used by rules.
With this mandatory declaration one lists the constraints
the rules will later talk about. The declaration can be used more
than once per handler.
Example:
constraints leq/2, minimum/3, maximum/3.
The following optional declaration allows for conditional rule
compilation. Only the rules mentioned get compiled. Rules
are referred to by their names (see CHR Syntax). The latest
occurrence takes precedence if used more than once per handler. Although
it can be put anywhere in the handler file, it makes sense, as with
other declarations, to use it early. Example:
rules antisymmetry, transitivity.
To simplify the handling of operator declarations, in
particular during fcompile/1
, operator/3
declarations with
the same denotation as op/3
, but taking effect during
compilation and loading, are helpful. Example:
operator(700, xfx, ::). operator(600, xfx, :).