5.2. Table of operators

operation associativity symbols function name description
let left let in
lambda left fun proc
dollar_apply left $
tuple nary ,
or_condition nary or lor logical or
and_condition nary and land logical and
not condition prefix not lnot logical not
comparison chain < lt less than
<= le less or equal
== eq equal
!= ne not equal
>= ge greater or equal
> gt greater
&< &<= &== &!= &>= &>
as_expr left as
setunion nary || union
user 10 left user defined
setintersection nary && intersection
arrow right -> function (type)
case_literal case of case selector
bor left \| bor bitwise or
bxor left \^ bxor bitwise exclusive or
band left \& band bitwise and
shift left << shl left shift
>> shr right shift
sum nary + add addition
subtraction left - sub subtraction
product nary * mul multiplication
term left / div quotient
% mod remainder
prefixed prefix lval lvalue (type)
+ unary plus
- neg negation
~ compl bitwise complement
power right ** pow real power
superscript left ^ exponential
refr prefix & address
* dereference
application left whitespace function application
caseno case number
coercion left : of annotation (type)
factor postfix . struct component
.[] subscript array component
.() tuple component
noexpand macro inhibitor
atom