Why can polymorphic data constructors not be instantiated as a class? (not sure if I used the right terminology there) For example, a = [1,True]::[Show] b = "foo":a c = map show b This would obviate the need for wrapper types