Az Apple más nyelvekben is megtalálható típusai:
Egyszerű típusok |
|
float |
racionális számok |
integer |
egészek |
{a1, a2, ..., an} |
felsorolási típus |
Összetett típusok |
|
record i1:t1 |
rekord típus |
t1*...*tn |
direkszorzat típus |
t->t' |
függvény |
set of t |
hatványhalmaz |
i1<>i1+...+in<>tn |
diszjunkt unio |
Az Apple-ban van két nem hagyományos típus létrehozó művelet is.
Az elsőt rekurzív adattípusok: listák, fák és ahsonló struktúrák létrehozására lehet használni:
Minden rekurzív típus megadható úgy, mint egy típus egyenlet megoldása. Például, egy típus, amelynek értékei egészek listái a
deklarációval definiálható, ahol a Nulltype számozási típus, amelynek egyetlen értéke a nulla.
A második a korlátozás: {x : T | b(x) } , ahol x kötött, T típus, b(x) logikai kifejezés
A típus-ellenőrző nem tudja eldönteni, hogy az Apple típuskifejezések ekvivalensek-e, mert atípuskorlátozásokat az alaptípus értékhalmaza feletti állításokkal jellemzi. A típus ellenőrző statikus megközelítést használ a típus korlátozásban. Ebből következik, hogy két korlátozott típus akkor és csak akkor ekvivalensek, ha alaptípusaik statikusan megegyeznek, és a predikátumaik szövegesen ugyanazok, eltekintve a betű szerinti konverziótól(kötött változó újranevezése); ez a megközelítés elkövetheti azt a hibát, hogy egy szemantikusan helyes programot hibásnak minősít, de soha nem fogad el hibás programot.