Mint a C/C++ -ban, itt is csak függvény írására van lehetőség a function kulcsszó segítségével, de a függvény visszatérési típusát nem kell a függvény deklarációs részében feltüntetni. Ha egy alprogram törzsében, egy végrehajtási úton nem szerepel a return kulcsszó, akkor a függvény visszatérési értéke az utolsó utasítás értéke lesz.
Lokális változót a static, és a local foglalt szavakkal deklarálhatunk. A statikus változók értéke megőrződik a függvényhívások között, és csak az első függvényhíváskor inicializálódnak, míg a local kulcsszóval deklaráltak élettartalma és láthatósága a függvény törzsére korlátozódik.
A függvények paraméterlistájában a dinamikus típusrendszer miatt csak formális paraméterek neveit kell feltüntetni. Lehetőség van változó hosszú paraméterlista írására a formális_név... felhasználásával, ilyenkor a meg nem nevezett paramétereket a formális_név nevű tömbváltozó segítségével érhetjük el. A paraméterek minden esetben referencia szerint adódnak át.
public function hello(a, b...)
{
basic.print(a,"\n");
basic.print(b,"\n");
}
hello("Hello", "vilag", "!");
A fenti programrészlet kimenete:
Hello
["vilag", "!"]
A függvények deklarálásakor a függvény neve elhagyható, így írhatunk névtelen függvényeket (closure), amelynek felhasználására már láttunk példát a bájtkód típusnál, de álljon itt még egy-két példa a jobb érthetőség miatt.
//névtelen fv. paraméterként való átadása:
map(#[1,2,3], function(x)
{
return x ** 2;
}
);
//értékadás változónak:
local pow = function(x,y)
{
return x ** y;
};
local sqr = function(x)
Túlterhelés
A nyelv név alapján azonosítja a függvényeket, így nem támogatja a függvények túlterhelését, de a nyelv dinamikus típusrendszere segítségével, és a változó hosszú paraméterlista felhasználásával könnyen szimulálhatjuk a függvénytúlterhelést.