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)