A G programozási nyelv

Beépített adattípusok, felhasználói adattípusok, típuskonstrukciók


Egész, logikai és string adattípussal találkoztam A függvényeket is “értékül adjuk” változóneveknek, tehát függvénytípus is van. Nincs típushierarchia, bár néhány helyzetben használható az any kulcsszó, tetszőleges típus jelölésére

Szigorú típusosság

A nyelv szigorúan típusosnak nevezi magát, de minden típusellenőrzést futási időben végez el. Ez egyrészt lehetetlenné teszi hatékony programok készítését, de ez nem is volt cél a nyelv megalkotásakor, mert csak tanulmánynyelvről van szó. Másrészt a dinamikus típusellenőrzés sok szokatlan lehetőséget is elérhetővé tesz (például közel áll hozzá a lazy-adatkiértékelés). A típust az definiálja, hogy mi az értékhalmaza, az egyes értékeknek nincs egyértelmű típusa. Pl az 1 tekinthető pozitív egésznek, egésznek, vagy valós számnak is.

Típuskonstrukciók

Ezek az eszközök nagyon általános típusdefiniálást tesznek lehetővé, ez a nyelv legszebb része. Mutatók nincsenek, nem is nagyon van rájuk szükség, mert a listák, halmazok mérete nem rögzített. Név szerinti típusegyenlőséget használ A teljes stack definíció:
let stack=@push|{empty_stack} let empty_stack=new let [push, [pop, top]]=cetype any ^stack