2.6.2 Operation syntax

The operators that have special syntax are classified and listed in order of decreasing binding power in the following table:

x.a infix dot
f(x) a[i] T{x} applicative (, [, {
p^ postfix ^
+ - prefix arithmetics
* / DIV MOD infix arithmetics
+ - & infix arithmetics
= # < <= >= > IN infix relations
NOT prefix NOT
AND infix AND
OR infix OR

All infix operators are left associative. Parentheses can be used to override the precedence rules. Here are some examples of expressions together with their fully parenthesized forms:

M.F(x) (M.F)(x) dot before application
Q(x)^ (Q(x))^ application before ^
- p^ - (p^) ^ before prefix -
- a * b (- a) * b prefix - before *
a * b - c (a * b) - c * before infix -
x IN s - t x IN (s - t) infix - before IN
NOT x IN s NOT (x IN s) IN before NOT
NOT p AND q (NOT p) AND q NOT before AND
A OR B AND C A OR (B AND C) AND before OR

Operators without special syntax are procedural. An application of a procedural operator has the form op(args), where op is the operation and args is the list of argument expressions. For example, MAX and MIN are procedural operators.

m3-support@elego.de