Node:CHR Backward Compatibility, Previous:CHR Constraint Handlers, Up:CHR
In this section, we discuss backward compatibility with the CHR library of Eclipse Prolog.
option(rule_ordering,heuristic). option(revive_scheme,old).
already_in_store,
already_in_head and guard_bindings options are still
around, but there are CHR syntax extensions (see CHR Syntax)
and pragmas (see CHR Pragmas) offering better grained control.
label_with declaration. Since it was not widely used and can
be easily simulated, built-in labeling was dropped. The same effect can
be achieved by replacing the declaration label_with Constraint if
Guard by the simplification rule chr_labeling, Constraint <=>
Guard | Constraint', chr_labeling and by renaming the head in
each clause Constraint :- Body into Constraint' :-
Body where Constraint' is a new predicate. Efficiency can
be improved by declaring Constraint to be passive:
chr_labeling, Constraint#Id <=> Guard | Constraint', chr_labeling
pragma passive(Id). This translation will not work if
option(already_in_heads,on). In that case use e.g.
chr_labeling(_), Constraint <=> Guard | Constraint',
chr_labeling(_) to make the new call to chr_labeling differ from
the head occurrence.