The operators that have special syntax are classified and listed in order of decreasing binding power in the following table:
x.ainfix dot f(x) a[i] T{x}applicative (,[,{p^postfix ^+ -prefix arithmetics * / DIV MODinfix arithmetics + - &infix arithmetics = # < <= >= > INinfix relations NOTprefix NOTANDinfix ANDORinfix 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) * bprefix -before*a * b - c(a * b) - c*before infix-x IN s - tx IN (s - t)infix -beforeINNOT x IN sNOT (x IN s)INbeforeNOTNOT p AND q(NOT p) AND qNOTbeforeANDA OR B AND CA OR (B AND C)ANDbeforeOR
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