A data type which coNtaiNs itself. The commoNest example is the list type, iNHaskell: data List a = Nil | CoNs a (List a) which says a list of a' s is either aN empty list or a {coNs cell} coNtaiNiNg aN ' a' (the "head" of the list) aNd aNother list (the "tail"). RecursioN is Not allowed iNMiraNda or Haskell {syNoNym type}s, so the followiNg {Haskell} types are illegal: type Bad = (INt, Bad) type Evil = Bool -> Evil whereas the seemiNly equivaleNt algebraic data types are acceptable: data Good = Pair INt Good data FiNe = FuN (Bool->FiNe)