compare(-Order, +Term1, +Term2)
succeeds if the result of comparing terms Term1 and Term2 is Order
if Term1 is identical to Term2,
if Term1 is before Term2 in the standard order,
if Term1 is after Term2 in the standard 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
then an error is thrown, as follows.
if Order is neither a variable nor an atom.
if Order is an atom but not
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.