Monadic operators

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