lambda 演算 学习

 前言

因为最近在学习组合范畴文法,也就是CCG(combinatory categorial grammar)。这种文法在表达语义的过程中使用到一些关于lambda演算的一些知识,所以在网上找到一些资料错略的学习了一下。在这里把所学习的内容整理一下以便以后学习参考。

lambda演算 (lambda calculus 或者 λ-calculus)

先简单介绍一下历史。当年莱布尼茨leibniz有两个理想:(1)希望能够创造一种能够描述任何问题的语言,(2)找到一种能够解决用这种通用语言描述的问题的通用方法,这个问题也就是Entscheidungsproblem (这是德语,其实就是decision problem,我们经常说的判定问题)。对于第二个遐想,1936年Church发明了一种形式系统也就是lambda calculus,并指出判定问题是无解的。lambda演算还能够清晰的定义什么是一个可计算的函数。之后,lambda演算对函数式的编程语言(如Lisp)的发展有很重要的影响,并且在λ-演算的基础上,发展起来的π-演算、χ-演算,成为近年来的并发程序的理论工具之一,许多经典的并发程序模型就是以π-演算为框架的。

1  lambda演算是什么?

lambda演算是一个形式系统(形式系统主要是由形式语言加上推理规则或转换规则构成的集合),它主要是被用来研究函数定义,函数应用和递归。简单点说,lambda演算就是一个小的形式系统,它主要表达了计算机计算中两个概念:“代入”和“置换”。“代入”通俗点解释就是和我们平常接触的函数调用类似,比如用实参代入到形参。“置换”一般理解为变量换名规则。“代入”就是后面要讲到的lambda演算中的β-规约,而“置换”相当于lambda演算中的α--变换。

2   lambda演算相关的概念和定义

lambda表达式主要由以下元素构成:

      变量: v1, v2, ..., vn, ...

抽象符号: λ 和 . (一个点)
左右括号 ( )
还有两个:规约:→ 和等价:=

lambda表达式的集合 Λ, 递归定义如下:

     (1)如果x是一个变量,那么 x ∈ Λ

     (2)如果 x 是一个变量,且 M ∈ Λ, 那么 (λx.M) ∈ Λ

     (3)如果 M, N ∈ Λ, 那么 (M N) ∈ Λ

λ-项

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值