"A lazy (~) pattern cannot bind existential type variables"?