A Genie programozási nyelv

Alprogramok, modulok

Szintaxis

Eljárás definíciója osztályon kívül is lehet, névtérben. Ezzel kiválthatók a statikus osztályok. A törzsben megadható az előfeltétel (requires), utófeltétel (ensures) és a dobott kivételek (raises) megadhatók. Részletesebben lásd a kontraktusoknál.

def invest (amount : int, twice: out int) twice = 2 * amount print "$%s is a lot of money to invest!", amount

Az alábbi kódrészlet illusztrálja a név nélküli alprogramokat (klósurák):

var f = def (x) print "%s", x+1 f(41)

Paraméterátadás

Lehetőség van C-szerű, nem biztonságos változó számú paraméterű alprogramok definiálására.

A definícióban a paraméterek típusánál feltüntethetőek a következő, aktuálisoktól elvárt tulajdonságok:

Híváshelyen az out/ref/?/# tulajdonságok szintén feltüntethetőek, melyeket fordításidőben ellenőriz a rendszer.

Túlterhelés

Genie-ben nincs se metódus, se konstruktor túlterhelés a C-vel való függvénykönyvtár szintű kompatibilitás miatt. Ehelyett konvenció, hogy különböző, a konstruktor vagy metódus működésére utaló egyértelműsítő névtoldalékot írunk aláhúzás után a névhez.

Rekurzió

Szemantikája megegyezik a C-vel (farok-hívás optimalizáció és más tekintetben is).