What does it mean for a type T to be a \"First Class\" type?
Usually it means instances of T can be
Eg functions in C are not first class types as they cannot be constructed at runtime, but they are in JavaScript.
In some specialised circumstances, for example theorem proving, it means that types themselves are first class objects. More modern literature uses 'reified types' instead to denote this to avoid such ambiguity.