Operators come in two flavours: monadic and dyadic. A monadic operator has only one operand, but a dyadic operator has two operands. A monadic operator is written before its operand. For example, the monadic minus - reverses the sign of its operand:
-3000
This could equally well be written - 3000 since spaces
are, generally speaking, not significant. There is, likewise, a
monadic + operator which doesn't do
anything to its operand, but is useful where you want to refer
expressly to a positive number. It has been provided for the sake of
consistency. You should note that -3000 is not a
denotation, but a formula consisting of a monadic operator operating
on an operand which is a denotation. We say that
the monadic operator - takes an operand of mode
INT and yields a
value of mode INT. It can also take an operand of
mode REAL when it will
yield a value of mode REAL.
A formula can be used as the value part of an identity declaration. Thus the following identity declarations are both valid:
INT minus 2 = -2; REAL minus point five = -0.5
The operator ABS takes an operand of
mode INT and yields the absolute value again of mode
INT. For example, ABS -5 yields the value
denoted by 5:
INT five = ABS -5
Note that when two monadic operators are
combined, they are elaborated in right-to-left
order, as in the above example. That is, the
- acts on the 5 to yield -5,
then the ABS acts on -5 to yield
+5. This is just what you might expect. ABS
can also take an operand of mode REAL yielding a value of
mode REAL. For example:
REAL x = -1.234; REAL y = ABS x
Another monadic operator which takes an INT operand is
SIGN. This yields
-1 if the operand is negative,
0 if it is zero, and
+1 if it is positive. Thus you can
declare
INT res = SIGN i
if i has been previously declared.
Sian Mountbatten 2012-01-19