Problems with scoped type variables and existential data constructors