A G programozási nyelv

Szemantika


Az előző példaban láthatjuk, hogy a tmp1 es tmp2 változókat csak az else ágban deklaráljuk, és kezdeti értéket is csak itt kapnak. Ennek oka a 'G' nyelv u.n. 'lusta', vagy 'késleltetett' kiértékelési módszere, melynek lényege a következő: Ha egy függvény alkalmazásához tartozó aktuális paraméter-kifejezés behelyettesitődik a függvény formális paraméterébe, akkor az egész kifejezés helyettesitődik be, nem csak az érték. Ez azt is jelenti, hogy a struktúra elemei csak akkor értékelődnek ki, ha megvizsgáljuk őket. Igy definiálhatunk végtelen adatstruktúrákat, s hivatkozhatunk adott elemeire anélkül, hogy túllépnénk erőforrásainkat. Meg kell még jegyeznünk, hogy a nyelv lehetőséget nyújt lista-elemek függvényenként való alkalmazására:
[F1,F2,...,Fn] x => [F1 x,F2 x,...,Fn x]
(F1,...Fn függvények, x operandus, F1 x az F1 függvény alkalmazva az x operandusra)