如果一个编程语言 “treats functions) as first-class citizens“,就可以说它拥有 first-class functions。

    这意味着:

    1. 函数可以作为另外一个函数的参数与返回值;
    2. 函数可以作为数据赋值给变量;
    3. 函数可以作为数据存储在数据结构中;
    4. 函数往往作为一种 ’函数类型’ 存在;

    总之:支持 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