First-class citizen
Concept Description Languages
first-class function closures and anonymous functions Scheme , ML , Haskell , F # , Kotlin , Scala , Swift , PHP , Raku , JavaScript , Delphi
first-class control continuations Scheme , ML , F #
first-class type dependent types Coq , Idris
first-class data type Generic Haskell . C++11
first-class polymorphism impredicative polymorphism
first-class message dynamic messages ( method calls ) Smalltalk , Objective-C
first-class class metaclass Smalltalk , Objective-C , Ruby , Python , Delphi
first-class proofs proof object Coq , Agda
Examples
The simplest scalar data types , such as integer and floating-point numbers , are nearly always first-class . In many older languages , arrays and strings are not first-class : they can not be assigned as objects or passed as parameters to a subroutine . For example , neither Fortran IV nor C supports array assignment , and when they are passed as parameters , only the position of their first element is actually passed—their size is lost . C appears to support assignment of array pointers , but in fact these are simply pointers to the array 's first element , and again do not carry the array 's size . In most languages , data types are not first-class objects , though in some object-oriented languages , classes are first-class objects and are instances of metaclasses . Few languages support continuations and GOTO-labels as objects at all , let alone as first-class objects .
In programming language design, a first-class citizen (also type, object, entity, or value) in a given programming language is an entity which supports all the operations generally available to other entities. These operations typically include being passed as an argument, returned from a function, modified, and assigned to a variable.