Generalized Algebraic Datatypes: A Different Approach