First-class citizen
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.[1]
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 cannot 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 used for metaclasses.
Few languages support continuations and GOTO-labels as objects at all, let alone as first-class objects.
Concept | Description | Languages |
---|---|---|
first-class function | closures and anonymous functions | Scheme, ML, Haskell, F#, Scala, Swift, PHP, Perl 6, JavaScript |
first-class control | continuations | Scheme, ML, F# |
first-class type | Coq, Idris | |
first-class data type | Generic Haskell. C++11 | |
first-class polymorphism | impredicative polymorphism | |
first-class message | dynamic messages (method calls) | Smalltalk,[7] Objective-C[7] |
first-class class | metaclass | Smalltalk, Objective-C, Ruby, Python |
proof object[8] | Coq, Agda |
最新文章
- 妈妈再也不用担心我找不到spring源码了!
- display:box和display:inline-box的区别
- JavaEE基础(二十四)/多线程
- OSGi之Bundle
- Java多线程时内存模型
- 判断js中的数据类型
- HDU1180+BFS
- TCP建立连接的3次握手和关闭连接的4次挥手
- C语言之头文件,static与const关键字
- 在centos6.5下yum仓库的创建
- MongoDB获得短暂的
- highcharts设置Y轴范围及根据Y轴范围设置不同颜色
- QT第四天学习
- Sublime Text3 高亮显示Jade语法 (Windows 环境)
- 【Centos7】安装nginx
- 配置可以通过http协议访问的svn服务器
- Spring -bean的装配和注解的使用
- js基础语句
- 爬取字段 spider_text
- windows 下安装MySQL 服务无法启动类问题