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.
halmaz jelölése: {blokk, …, blokk}
jelölése: [blokk,…,blokk] head:fejelem; tail: maradék ~ lista-konkatenáció ! indexelés: [1,4,3]!2=4 .. intevallum prep lista elejére elem beszúrása a dinamikus típusellenőrzésnek köszönhetően szinte minden lehet benne, pl: függvények listája alkalmazható egy változóra: [F1,…, Fn] x eredménye [F1 x,…, Fn x]
A ^ karakterrel típusok direkt szorzatát jelölhetjük, ennek felhasználására később mutatok példát
a new kulcsszóval egy új értéket definiálhatunk, aminek, a fentiek szerint még nincs típusa, hanem majd felhasználhatjuk egy típus definiálásakor pl:
Ez a típuskonstrikciós eszköz egy konstruktorral és egy szelektorral definiálja a típust, tehát két függvényt ad vissza: let [push,[top, pop]]=cetype any ^ stack A listáknál mutatott példa szerint a [top, pop] is tekinthető egy függvénynek, melynek mindkét tagja egy függvény. A konstruktor egy “any” és egy stack felhasználásával egy újabb értéket hoz létre (megnevezett típusa még ennek sincs), a programozó számára csak annyi számít, hogy mindkét rész “kiszedhető2 az új értékből. A szelektorok szolgálnak a részek “kiszedésére”. let [person, [age, married, name]]=cetype int ^ bool ^ string
A @push kifejezés jelenti az előbb definiált push függvény tetszőleges alkalmazásával kapott értékek halmazát. Ezt tekintjük egy típusnak, pontosabban fogalmazva ez egy típusérték-halmaz.
Mivel a típusokat típusérték-halmazzal definiáljuk, a halmazműveletek is típuskonstrukciók: únió (|), metszet (&)
sat P jelenti azon értékek halmazát, melyek kielégítik (satisfy) a P predikátumot (feltételt)