

=Notice that the precedence of (**)/2
is xfx
, which is different from that of (^)/2
, which is xfy
.
This may lead to surprises such as the following succeeding:
?- Y = 2, X is 2 ^ -Y. Y = 2, X = 0.25.
while the following throws an exception:
?- Y = 2, X is 2 ** -Y. ERROR: Syntax error: Operator priority clash ERROR: Y = 2, X is 2 * ERROR: ** here ** ERROR: * -Y .
The introduction of brackets in the exponent of (**)/2
solves this.=