Apple

Beépített adattípusok, absztrakt adattípusok

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
           .
           .
           in:tn
           end; 

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

type Intlist : list rec emptylist#Nulltype+cons(integer*list)

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.