A data type whiCh Contains itself. The Commonest example is the list type, in Haskell: 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 in Miranda 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)