如果一个编程语言 “treats functions) as first-class citizens“,就可以说它拥有 first-class functions。
这意味着:
- 函数可以作为另外一个函数的参数与返回值;
- 函数可以作为数据赋值给变量;
- 函数可以作为数据存储在数据结构中;
- 函数往往作为一种 ’函数类型’ 存在;
总之:支持 first-class functions 的语言,对待函数像对待普通变量一样,普通变量拥有的操作方式,函数也都有。
为了 “支持函数可以作为另外一个函数的参数与返回值” 这样的特性,语言引擎的实现上,会比较有难度。
经典的 funarg problem,具体参考:https://en.wikipedia.org/wiki/Funarg_problem(未深究)
参考:
https://en.wikipedia.org/wiki/First-class_function
https://en.wikipedia.org/wiki/First-class_citizen