module DataTypes where data A a = B | C (A a) | D (A a) a (A a) deriving Eq data Tree a = Leaf a | Bin (Tree a) (Tree a) deriving Eq data Rose a = Fork a [Rose a] deriving Eq data List a = Nil | Cons a (List a) deriving Eq data TreeOfList a = TL (Tree (List a)) deriving Eq data RoseTree a = Fork2 a (List (RoseTree a)) deriving Eq {- data A a = B | C (A a) | D (A a) a (A a) deriving (Eq,Show,Read) data Tree a = Leaf a | Bin (Tree a) (Tree a) deriving (Eq,Show,Read) data Rose a = Fork a [Rose a] deriving (Eq,Show,Read) data List a = Nil | Cons a (List a) deriving (Eq,Show,Read) data TreeOfList a = TL (Tree (List a)) deriving (Eq,Show,Read) data RoseTree a = Fork2 a (List (RoseTree a)) deriving (Eq,Show,Read) -}