Variables 在lambda演算中,变量一般可以是表达式吗?
为了更好地理解函数式编程,我正在阅读lambda演算的wiki页面 定义是: 如果x是一个变量,M∈ ∧,那么(λx.M)∈ ∧ 直觉上,我认为变量是由单个字母id表示的。但因为这里我们讨论的是严格的数学定义,所以我只想再次确认这个理解:一般来说,表达式可以被归类为变量吗 e、 g.如果Variables 在lambda演算中,变量一般可以是表达式吗?,variables,lambda-calculus,Variables,Lambda Calculus,为了更好地理解函数式编程,我正在阅读lambda演算的wiki页面 定义是: 如果x是一个变量,M∈ ∧,那么(λx.M)∈ ∧ 直觉上,我认为变量是由单个字母id表示的。但因为这里我们讨论的是严格的数学定义,所以我只想再次确认这个理解:一般来说,表达式可以被归类为变量吗 e、 g.如果x是一个变量,那么表达式(x+x)在lambda演算中是一个变量吗?i、 把(λ(x+x).M)写成lambda微积分抽象可以吗 (关注点是在某些情况下,这是正确的。例如:像4x^3这样的表达式是一个变量)不,(
x
是一个变量,那么表达式(x+x)
在lambda演算中是一个变量吗?i、 把(λ(x+x).M)写成lambda微积分抽象可以吗
(关注点是在某些情况下,这是正确的。例如:像4x^3这样的表达式是一个变量
)不,(x+x)
不是变量(实际上它甚至不是朴素的lambda演算中的表达式)。
我认为您以某种方式混合了术语变量和表达式(或者想要某种模式匹配?)
那么让我们遵循lambda演算和表达式的核心定义:
定义本身并没有那么难(事实上,您自己将其与wiki页面链接)。
从一开始就提到:
- 你有一组变量:(
)(当然你可以随意命名它们-重要的是你要记住,它们在微积分中被视为不同的符号)V_1,V_2,…
- 符号
,λ
,
和(
)
- 每个变量都是一个表达式
- 抽象:如果
是一个表达式,而E
是一个变量,那么x
是一个表达式(这里(λx.E)
和x
是模板或元变量-您必须用一些实表达式填充它们才能使其成为表达式!)E
- 应用程序:如果
和A
是表达式,则B
是表达式(A B)
v_50
(λv_4.v_5)
((λv_4.v_5)v_50)
(x+x)
作为变量的符号或名称,它就永远不会是变量——事实上,没有表达式是变量,即使有些表达式只包含一个所述变量——如果你调用某个表达式,它也永远不会是变量(再次);)
PS:当然有一些惯例可以让括号稍微小一点,但首先你不需要它们。谢谢你的精彩解释。符号听起来更合理。