module overloaded_constructors :: Tree a = Node a (Tree a) (Tree a) | TreeNil :: List a = Cons a (List a) | ListNil class Nil a :: a b instance Nil Tree where Nil = TreeNil instance Nil List where Nil = ListNil Start = Cons 5 Nil