11 Infix Notations

Oz supports infix and prefix notation for very common procedures (see Section 3.5 of ``The Oz Notation'').

In the following table, we give the prefix and infix notations and the corresponding expansions. The operators are grouped together according to their precedence. Members of the same group have the same precedence, groups further up have lower precedence than groups further down. ``Having higher precedence'' means ``binding tighter''; e. g., the term X.+ Z is equal to (X.Y) + Z. Ambiguities within each group are resolved by the associativity given before each group (e. g., - Y + Z is equivalent to (X - Y) + Z).

Infix

Normal

right-associative

X = Y

{Value.'=' X Y}

right-associative

+LI <- X

{Object.'<-' LI X}

Y = +LI <- X

{Object.exchange LI X Y}

non-associative

?B = X == Y

{Value.'==' X Y B}

?B = X \= Y

{Value.'\\=' X Y B}

?B = +AFI1 < +AFI2

{Value.'<' AFI1 AFI2 B}

?B = +AFI1 =< +AFI2

{Value.'=<' AFI1 AFI2 B}

?B = +AFI1 > +AFI2

{Value.'>' AFI1 AFI2 B}

?B = +AFI1 >= +AFI2

{Value.'>=' AFI1 AFI2 B}

left-associative

?FI3 = +FI1 + +FI2

{Number.'+' FI1 FI2 FI3}

?FI3 = +FI1 - +FI2

{Number.'-' FI1 FI2 FI3}

left-associative

?FI3 = +FI1 * +FI2

{Number.'*' FI1 FI2 FI3}

?F3 = +F1 / +F2

{Float.'/' F1 F2 F3}

?I3 = +I1 div +I2

{Int.'div' I1 I2 I3}

?I3 = +I1 mod +I2

{Int.'mod' I1 I2 I3}

left-associative

+K, +R

{Object.',' K R}

prefix

?FI1 = ~+FI2

{Number.'~' FI2 FI1}

left-associative

X = +RC.+LI

{Value.'.' RC LI X}

infix

X = @+LI

{Object.'@' LI X}

X = !!Y

{Value.'!!' X Y}


Denys Duchier, Leif Kornstaedt and Christian Schulte
Version 1.2.5 (20030703)