Az Afnix programozási nyelv

Alprogramok

A funkcionális programozást gyakran szokták úgy leírni, hogy benne van a képesség függvények létrehozására, amelyek függvényeket hoznak létre. A tények kedvéért a dolog messzebbre nyúlik, a gyökereit a lambda kalkulusban találjuk. Az AFNIX-hoz hasonló funkcionális programozási nyelveket gyakran szokták magasrendû nyelveknek hívni.

Egy lambda vagy gamma kifejezést tekinthetünk úgy, mint egy függvény objektumot név nélkül. A kiértékelési folyamat során, a kifejezés objektum kiértékelõdik a paraméterekkel együtt(balról jobbra), és az eredményt a paraméterek függvény objektumra történõ alkalmazása adja. Egy kifejezést dinamikusan is fel lehet építeni a kiértékelési folyamat részeként.

println ((lambda (n) (+n 1)) 1)
2

Amikor egy függvény kifejezést rekurzióval kombinálunk, a függvény önmagát hívása problémává válik, hiszen a függvény kifejezésnek nincs neve. Ebbõl az okból kifolyólag található az AFNIX-ban a self kulcsszó, ami a függvényre történõ hivatkozást segíti. Ennek bemutatására a jól ismert faktoriálist kifejezés a legjobb, tisztán funkcionális stílusban megírva.

println ((gamma (n) (if (<= n 1) 1 (* n (self (- n 1))))) 5)
120