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.