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