compare/3 [ISO]compare(-Order, +Term1, +Term2)
succeeds if the result of comparing terms Term1 and Term2 is Order
=<>The standard order is described in ref-lte-cte. Note that the standard order is not, in general, well defined for cyclic terms.
The goal (A) is equivalent to (B):
| ?- compare(=, Term1, Term2). (A)
|?- (Term1 == Term2). (B)
The following query succeeds, binding R to <, because 1 comes
before 2 in the standard order.
| ?- compare(R, 1, 2).
R = <
If Order is supplied, and is not one of <, >, or
=,
then an error is thrown, as follows.
type_error(atom, Order)domain_error(order, Order)<, =, or >.
These errors were added in SICStus Prolog 4.3 for alignment with the ISO Prolog standard. Previous versions of SICStus Prolog simply failed instead of reporting an error.
@</2,
@=</2,
@>/2,
@>=/2,
SP_compare(),
ref-lte-cte.