The Prolog standard ISO/IEC 13211-1:1995/Cor.2:2012
features compare/3:
8.4.2 compare/3 – three-way comparison
8.4.2.1 Description
compare(Order, X, Y) is true iff Order unifies with R which is one of the following atoms: '=' iff X and Y are identical terms (3.87), '<' iff X term_precedes Y (7.2), and '>' iff Y term_precedes X. [...]
Recently, it dawned on me that using the atoms <, =, and > is somewhat weird:
The predicates
(<)/2and(>)/2express arithmetic comparison.The predicate
(=)/2on the other hand is syntactic term unification.
IMHO, a much more natural choice would (have) be(en) @<, == and @>, as these are exactly the predicates whose fulfillment is determined by compare/3.
So: why were the atoms </=/> chosen—and not @</==/@>?