These predicates test the ordering of two terms as defined by the specification.
A goal executing any of these built-in predicates simply succeeds or fails; there is no side effect, unification, or error.
@=</2 (term less than or equal), ==/2 (term identical), \==/2 (term not identical), @</2 (term less than), @>/2 (term greater than), @>=/2 (term greater than or equal)These predicates also test the identity and term-precedence of their arguments. As an example, '@=<'(X, Y) is true iff X preceds Y as defined by the specification, or X and Y are identical terms.
Templates and modes for the predicate are as follows:
'@=<'(@term, @term) '=='(@term, @term) '\\=='(@term, @term) '@<'(@term, @term) '@>'(@term, @term) '@>='(@term, @term)
Let's start with some simple tests verifying success of failure of single goals.
| alice.tuprolog.SimpleGoalFixture | |
| goal | success() |
| '@=<'(1.0, 1). | true |
| '@<'(1.0, 1). | true |
| '\\=='(1, 1). | false |
| '@=<'(aardvark, zebra). | true |
| '@=<'(short, short). | true |
| '@=<'(short, shorter). | true |
| '@>='(short, shorter). | false |
| '@<'(foo(a, b), north(a)). | false |
| '@>'(foo(b), foo(a)). | true |
| '@<'(foo(a, X), foo(b, Y)). | true |
| '@<'(foo(X, a), foo(Y, b)). | |
| '@=<'(X, X). | true |
| '=='(X, X). | true |
| '@=<'(X, Y). | |
| '=='(X, Y). | false |
| \==(_, _). | true |
| '=='(_, _). | false |
| '@=<'(_, _). | |
| '@=<'(foo(X, a), foo(Y, b)). | |
Run the tests!
The results of the tests for Term comparison are as follows:
| fit.Summary |