There are small differences between CHR
in SWI-Prolog and SICStus. Besides differences in available options and
pragmas, the following differences should be noted:
- The handler/1 declaration
In SICStus every CHR module requires a handler/1 declaration
declaring a unique handler name. This declaration is valid syntax in
SWI-Prolog, but will have no effect. A warning will be given during
compilation.
- The rules/1 declaration
In SICStus every CHR it is possible to only enable a subset of the
available rules through the rules/1 declaration. The declaration
is valid syntax in SWI-Prolog, but will have no effect. A warning will
be given during compilation.
- Sourcefile naming
SICStus uses a two-step compiler, where .chr
files are
first translated into .pl
files. For SWI-Prolog CHR rules
may be defined in a file with any extension.