52λ演算 λ演算是符号的逻辑演算系统,它正好只有这 三种机制,它就成为函数式程序设计语言的模 型 λ演算是一个符号、逻辑系统,其公式就是符。 号串并按逻辑规则操纵 Church的理论证明,λ演算是个完备的系统 可以表示任何计算函数,所以任何可用λ演算 仿真实现的语言也是完备的
5.2 λ演算 • λ演算是符号的逻辑演算系统,它正好只有这 三种机制, 它就成为函数式程序设计语言的模 型 • λ演算是一个符号、逻辑系统,其公式就是符 号串并按逻辑规则操纵 • Church的理论证明, λ演算是个完备的系统, 可以表示任何计算函数, 所以任何可用λ演算 仿真实现的语言也是完备的
λ演算使函数概念形式化,是涉及变量、函 数、函数组合规则的演算。 入演算基于最简单的定义函数的思想:一为 函数抽象λX.E,一为函数应用(λxE)(a)。 高阶函数。如入xC(为常量)是常函Q合 切变量、标识符、表达式都是函数或(
• λ演算使函数概念形式化,是涉及变量、函 数、函数组合规则的演算。 • λ演算基于最简单的定义函数的思想: 一为 函数抽象λx.E, 一为函数应用(λx.E)(a)。 • 一切变量、标识符、表达式都是函数或(复合) 高阶函数。如λx.C(C为常量)是常函数
λ演算公式举例 变量、公式、表达式 (λx.((y)x)) 函数,体内嵌入应用。 (λz.(y(λz.x))函数,体内嵌入应用 再次嵌入函数。 ((λz.(zy)x)应用表达式。 λx.Ay.λz.(xλx.(uv)w)复杂表达式
λ演算公式举例 x 变量、公式、表达式。 (λx.((y)x)) 函数, 体内嵌入应用。 (λz.(y(λz.x))) 函数, 体内嵌入应用, 再次嵌入函数。 ((λz.(z y))x) 应用表达式。 λx.λy.λz.(x λx.(u v)w) 复杂表达式
由于λ演算中一切语义概念均用λ表达式表 达。为了清晰采用命名替换使之更易读。 λx.Ay.x //逻辑真值 TF12 入 Ⅹ.Ny.y //逻辑假值 λx.y.xy //数1 入x.y.x(xy //数2 zerop=n.n(λx.F)T/判零函数 注: zerop中的F、T可以用λ表达式展开
由于λ演算中一切语义概念均用λ表达式表 达。 为了清晰采用命名替换使之更易读。 T = λx.λy.x //逻辑真值 F = λx.λy.y //逻辑假值 1 = λx.λy.x y //数1 2 = λx.λy.x(x y) //数2 zerop = λn.n(λx.F)T //判零函数 注:zerop中的F、T可以用λ表达式展开
形式语法 核心的λ演算没有类型,没有顺序控制等概念 程序和数据没有区分。语法极简单 λ-表达式〉:∴:=<变量> λ<变量>.〈λ-表达式> (<λ-表达式X-表达式>) (<λ-表达式>) 变量〉 <字母
形式语法 核心的λ演算没有类型, 没有顺序控制等概念 , 程序和数据没有区分。 语法极简单: <λ-表达式> :: = <变量> | λ<变量>.<λ-表达式> | (<λ-表达式><λ-表达式>) | (<λ-表达式>) <变量> :: =<字母>