Can I create a representation polymorphic datatype?