in the design of a programming language. A type whose objects can take part in the full range of operations available within the language (such as declaration of constants and variables of the type in question, assignment of values, employment as fields of records and as elements of arrays, occurrence as parameters and return values of functions). The objects of a first-class type are first-class objects. For example, functions are first-class in Algol 68 but not in Algol 60, Pascal or Ada.