VDict mobile



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 conscell containing an 'a' (the "head" of the list) and another
list (the "tail").
Recursion is not allowed in Miranda or Haskell synonymtypes, 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)