Comparison and unification of arbitrary terms. Terms are ordered in
the so called ``standard order''. This order is defined as follows:
- Variables < Atoms < Strings
- Old Variable < New Variable (7)
- Atoms are compared alphabetically.
- Strings are compared alphabetically.
- Numbers are compared by value. Integers and floats are
treated identically.
- Compound terms are first checked on their arity, then on
their functor-name (alphabetically) and finally recursively on their
arguments, leftmost argument first.
If the feature (see feature/2) iso
is defined, all floating point numbers precede all integers.
- +Term1 == +Term2
-
Succeeds if Term1 is equivalent to Term2. A
variable is only identical to a sharing variable.
- +Term1 \== +Term2
-
Equivalent to
\+
Term1 == Term2
.
- +Term1 = +Term2
-
Unify Term1 with Term2. Succeeds if the
unification succeeds.
- +Term1 \= +Term2
-
Equivalent to
\+
Term1 = Term2
.
- +Term1 =@= +Term2
-
Succeeds if Term1 is `structurally equal' to Term2.
Structural equivalence is weaker than equivalence (==/2),
but stronger than unification (=/2). Two
terms are structurally equal if their tree representation is identical
and they have the same `pattern' of variables. Examples:
a | =@= | A | false |
A | =@= | B | true |
x(A,A) | =@= | x(B,C) | false |
x(A,A) | =@= | x(B,B) | true |
x(A,B) | =@= | x(C,D) | true |
- +Term1 \=@= +Term2
-
Equivalent to
`\+
Term1 =@= Term2'
.
- +Term1 @< +Term2
-
Succeeds if Term1 is before Term2 in the standard
order of terms.
- +Term1 @=< +Term2
-
Succeeds if both terms are equal (==/2)
or Term1 is before Term2 in the standard order of
terms.
- +Term1 @> +Term2
-
Succeeds if Term1 is after Term2 in the standard
order of terms.
- +Term1 @>= +Term2
-
Succeeds if both terms are equal (==/2)
or Term1 is after Term2 in the standard order of
terms.
- compare(?Order, +Term1,
+Term2)
-
Determine or test the Order between two terms in the standard
order of terms. Order is one of
<
, >
or =
, with the obvious meaning.