Generalised abstract data types, phantom types and modules

My bad, this is a duplicate of Unable to refute impossible GADT pattern when phantom types belong to a module