Subtypes in Polymorphic Functional Languages