First shot at checking coercability between datacon arguments
Support the simplest kind of recursive data type
Failing recursive data type
Handle multiple ocurrences of the same type constructor