newtype Recu f = R (f (Recu f)) data Stream0 a r = S (a, r) data List0 a r > Stream0 a r = Nil type Stream a = Recu (Stream0 a) type Lista a = Recu (List0 a) str a = R (S (a,str a))