What does it mean for a type T to be a \"First Class\" type?
I think a first-class type is about the same thing as a first-class object. It's basically the type which provides the properties of a first-class object.