lambda演算简单整理

最近在看虎书的时候见到了函数式语言,随即想到了Lisp,和它的语言写法——即(write (+ 1 2))这类东西。Lisp语言受到过λ演算的启发,为了更好的理解下函数式,便去查找了下λ演算的资料——但是网上资料比较少,折腾了几日,把它们总结如下。

λ演算是阿隆佐邱奇(Alonzo Church)所发明的,那个时代还活跃着另一位科学家——阿兰图灵,就是发明图灵机的那位。λ演算和图灵机都做着相同的任务——计算,它是一个非常简单而且小巧的形式系统,简单理解,就像几何原本里面的几条公理,通过那几条公理,就像符号游戏一般,推导出整本书的所有定理、假设等等。这种有公理和能够进行推导的就是形式系统,自然地,描述它的就是形式语言。

在λ演算看来,一切都是表达式,包括函数——函数是抽象的表达式。它有三种合法的表达式,或者叫做项:

λ-term: 变量 Variable

首先是变量,是一个标识符,比如x、xy、var这些。注意,不要把变量理解为一个值,它可以代表任何东西,比如你认为平行线段永不相交,那么它就可以当作一个变量,并通过一系列操作推导出其它定理,当然,我们也可以用它表示一个值。

变量有着和一般程序语言类似的规则。当一个变量是在当前作用域下定义的,那么称它是绑定的(类比于局部变量),当一个变量是外层作用域定义的,但是本层作用域访问了,那么该变量是自由变量(类比逃逸变量)。注意,自由变量还是绑定变量是相对于作用域而言的——对于内层作用域,一个外层作用域的变量是自由的,而外层作用域则认为它是绑定的。

一个不含自由变量的项被称作封闭的,或者称为组合子。

λ-term: 抽象体 Abstraction

抽象体类似于函数一样,表达着拥有一个参数

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值