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, :).