Az Oz/Mozart programozási nyelv

Alprogramok, modulok

Alprogramok, modulok

Szintaxis

Függvények definíciója:

fun {F X1 ... Xn} S E end
F: függvény neve, X1 … Xn: formális paraméterek szóközzel elválasztva, S: kifejezés-sorozat, E: kifejezés. A függvény visszatérési értéke E.
Eredményváltozó bevezetése:
proc {F X1 ... Xn R} S R=E end
Ozban lehetőség van név nélküli eljárások írására is, és név nélküli eljárások elnevezésére. Például:
P = proc {$ X1 ... Xn} S end

Paraméterátadás

A formális paraméterek úgy működnek, mintha egy eltérő szálban szerepelnének, így a hívás blokkolódik, amíg értéket nem kapnak. Ez mindig érték szerinti átadás.
Eljárás hívása:

{ P X1 … Xn R }
A P nevű eljárást hívja X1, …, Xn paraméterekkel, az eredmény az R változóba kerül.
Eljárások hívása egymásba ágyazható, ha pl. P és Q 1-1 eljárás, {Q … {P …$... } … } is írható, amit a fordító
local Y in {P ... Y ...} {Q Y ... } end
kódrészletre cserél ki. Az első utasításban Y a $ helyére, a másodikban a beágyazott eljáráshívás helyére kerül.
Funkcionális beágyazás: egy { P X … R } felfogható függvényként, ami R –rel tér vissza, { P X … } pedig egy függvényhívás, aminek szintén R a visszatérési értéke.
Így { Q { P X … } … } ekvivalens az alábbival:
local R in { P X … R } { Q R … } end

Rekurzió

Természetesen van.