Az absztrakt adattípusok olyan típusok, amelyeknek az aktuális definíciója rejtett. A Clean-ben előre definiált absztrakt adattípusok a World és a File. Ezeket felismeri a fordítóprogram és speciálisan kezeli, egyrészt hatékonysági okokból, másrészt azért, mert speciális szerepük van a nyelvben. Mivel az aktuális definíció rejtett, ezért nincs lehetőség ilyen típusú konstans értékek létrehozására.
A *World típusú objektum automatikusan létrejön programok indításánál, illetve opcionálisan átadatjuk a Start függvénynek, mint argumentumot. Ennek az objektumnak a segítségével hatékony interakció valósítható meg a "külvilággal" (ami persze feltétlenül egyedi).
Interaktív program startkifejezése:
A "..." a megváltoztatott világ leírásának helye, az input-output könyvtár objektumai és függvényei használhatók itt. Ezek a könyvtárak kiterjedt lehetőségekkel rendelkeznek, de éppen ezért ez egy külön nagy téma, amit most nem tárgyalunk.
A File vagy *File típus egy objektuma a StdFileIO könyvtárban definiált függvények segítségével hozható létre. Perzisztens adat közvetlen manipulációját teszi lehetővé.
A String típus egy előredefiniált szinonimatípus (kényelmi meggondolásokból). Ez a típus a karakterek dobozolatlan tömbjének ({#Char}) szinonimája.
Absztrakt adattípust úgy definiálhatunk, hogy a típus definíciójának csak a bal oldalát adjuk meg a definíciós modulban, a jobb oldalt csak az implementációs modulban írjuk le.
A konkrét típus bal oldalának meg kell egyeznie az absztrakt adattípus definíciójának bal oldalával (kivéve a szigorúsági és egyediségi attribútumokat).