35.4.11 Exceptions

The CHR runtime system reports instantiation and type errors for the predicates:

find_constraint/2
findall_constraints/3
insert_constraint/2
remove_constraint/1
notify_constrained/1

The only other CHR specific runtime error is:

     ! CHR: registering New, module Module already hosts Old
An attempt to load a second handler New into module Module already hosting handler Old was made.

The following exceptional conditions are detected by the CHR compiler:

     ! CHR Compiler: syntax rule N: Term
If the N-th Term in the file being loaded violates the CHR syntax (see CHR Syntax).
     ! CHR Compiler: too many general heads in Name
Unspecific heads in definitions like C \ C <=> true must not be combined with other heads in rule Name.
     ! CHR Compiler: bad pragma Pragma in Name
The pragma Pragma used in rule Name does not qualify. Currently this only happens if Pragma is unbound.
     ! CHR Compiler: found head F/A in Name, expected one of: F/A list
Rule Name has a head of given F/A, which is not among the defined constraints.
     ! CHR Compiler: head identifiers in Name are not unique variables
The identifiers to refer to individual constraints (heads) via `#' in rule Name do not meet the indicated requirements.
     ! CHR Compiler: no handler defined
CHR specific language elements, declarations or rules for example, are used before a handler was defined. This error is usually reported a couple of times, i.e. as often as there are CHR forms in the file expecting the missing definition.
     ! CHR Compiler: compilation failed
Not your fault. Send us a bug report.