Besteht aus
-
einem (oder mehreren) Datentypen, sowie
-
Operationen darauf
-
Werte des Datentypen werden ausschließlich über bereitgestellte Operationen erzeugt und modifiziert
-
Eigenschaften von Werten werden nur über bereitgestellte Operationen beobachtet
-
Invarianten des ADT sind garantiert durch bereitgestellte Operationen
-
keine Beeinträchtigung der Invarianten von außen
⇒ Siehe auch Haskell Module