什么时候一种语言有资格成为功能语言?
When a language qualifies as a functional language?
一种语言应该具备哪些特征才能成为功能性语言?什么时候我们可以说一种语言 XYZ
支持函数范式?
What are the traits a language should have to be qualified as a functional language? When we can say that a language XYZ supports functional paradigm?
这是两个不同的问题。我会说 "supporting functional paradigm" 意味着:
- 您可以像处理其他类型一样处理函数(在局部变量、参数等中使用它们)
- 您可以内联定义匿名函数(a.k.a.lambda 函数)
- 匿名函数可以访问在其环境中声明的变量(这称为闭包)
根据这个定义,几乎所有现代主流编程语言都支持函数范式(C 除外)。
要归类为 "functional language",一门语言需要将函数式范式作为其主要或唯一范式,包括不变性和纯(无副作用)函数。除了上述之外,这通常意味着:
- 支持声明不可变类型,如区分联合
- 支持模式匹配
- 函数体由表达式组成,而不是语句
一种语言应该具备哪些特征才能成为功能性语言?什么时候我们可以说一种语言 XYZ
支持函数范式?
What are the traits a language should have to be qualified as a functional language? When we can say that a language XYZ supports functional paradigm?
这是两个不同的问题。我会说 "supporting functional paradigm" 意味着:
- 您可以像处理其他类型一样处理函数(在局部变量、参数等中使用它们)
- 您可以内联定义匿名函数(a.k.a.lambda 函数)
- 匿名函数可以访问在其环境中声明的变量(这称为闭包)
根据这个定义,几乎所有现代主流编程语言都支持函数范式(C 除外)。
要归类为 "functional language",一门语言需要将函数式范式作为其主要或唯一范式,包括不变性和纯(无副作用)函数。除了上述之外,这通常意味着:
- 支持声明不可变类型,如区分联合
- 支持模式匹配
- 函数体由表达式组成,而不是语句