Típusok, típuskonstrukciók
Dinamikusan típusos nyelv, azaz, amikor egy változó létrejön, annak értéke és típusa is ismeretlen. A típusa csak a változó lekötésekor derül ki, és a felvett érték határozza azt meg.
Minden változónak pontosan 1 állapota van a következők közül:
- szabad (free)
Az X változó szabad, ha a megszorítás-tár X=Y változó-egyenlőségeken kívül semmit sem tud az X –ről.
- lekötött (determined)
Az X változó kötött, ha X=N valamilyen N szám konstansra, X=f(a1: _ ... an: _), ahol f címke az adott aritással vagy X=A, ahol A byte, string, procedure, chunk, space vagy thread típusú.
- leendő (future)
Az X változó leendő, ha X=Y valamilyen leendő Y –ra.
- típusosított (kinded)
Az X változó típusosított, ha nem szabad, nem kötött, és nem leendő.
A funkcionális nyelvekben fontos elem a mintaillesztés, mely egy minta és egy konkrét lista közti „értékadást” takar.
{l1,…,ln} = {k1, …, km } alakú. Az illesztés sikeres, ha minden i –re igaz, hogy ha li kötött, akkor li == ki, vagy li nem kötött. Ha az illesztés sikeres a szabad li változók lekötődnek ki értékkel.
Típusszerkezet
Beépített típusok
Egy azonosító típusa mindig értékadáskor dől el. A párhuzamosított változók ha egyszer értéket kaptak, onnantól konstansokká válnak.
Nagyon fontos beépített típus a lista, a rekord és a tuple.
Saját típusok
Létre tudunk hozni saját típusokat. Osztályokat a Chunk típusból származtatva hozhatunk létre. Az osztály is egy típus, ahogy a fenti ábrán is látszik.
Típuskonverziók
Változók, konstansok