[top] [prev] [next]

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.

[top] [prev] [next]