浅谈λ演算与Python的lambda函数

本文介绍了λ演算的基础概念,包括λ演算的句法结构、等价变换法则,以及其与Python中lambda函数的联系。λ演算的无名函数和单参数特性在Python中得以体现,通过λ函数可以实现简洁的代码表达。文章还探讨了λ演算中的α-等价、β-归约和η-变换,并提供了Python lambda函数的使用示例。
摘要由CSDN通过智能技术生成

浅谈λ演算与Python中的lambda函数

作者:牛伯雨

Python里有一个十分方便的功能,那就是lambda函数。使用这一功能,可以让代码显得简洁明快,甚至一行搞定很多步运算。在讨论Python的lambda运算之前,我们先来看看它的原型:λ演算。

λ演算

初识λ演算

λ演算十分简洁,比如 λ x . x λx.x λx.x就是一个lambda项(之后我们进一步讨论lambda项的定义)。

形式简单,内容却很丰富:它可以表示一切函数。借助这一工具,我们可以删繁就简探究两个程序的本质是否是一样的,思考编程与逻辑之间的关系,等等。

λ演算是在1936年由阿隆佐·邱奇首次提出的。在同一年,还有另一项深刻地影响着后世的发明——阿兰·图灵的图灵机。这两个发明是分别被独立地提出的,但是不久之后邱奇的学生克莱尼证明,两者在本质上是相同的,真可谓英雄所见略同。也就是说,凡是能用图灵机计算的函数,都可以用λ演算,反之亦然。

图灵机示意图,其作者Schadel已此图它纳入公共领域,可以免费使用

就着图来快速说一下图灵机的基本组成:

  1. 一条无限长的条带,上面有被编号的一个接一个的格子;
  2. 一个读写头,可以在条带上左右移动,也可以写入提前定义好的有限个符号的其中之一,或读取或删除当前格子里的符号;
  3. 一套控制规则,告知图灵机要做什么——写入或删除当前符号,向哪个方向移动读写头,或保持当前状态,亦或进入下一状态;
  4. 一个状态寄存器,以寄存图灵机当前状态。

λ演算的句法结构

两个特征

λ演算具有两个显著的特征:首先,λ演算中的函数都是没有名字的,表达一个函数时,需要把它具体的内容写出来,比如 λ x . x + 5 λx.x + 5 λx.x+5。这个函数表示,不管你给我一个什么数,我都把这个数加5再输出。

第二点是,λ演算中的一个函数只能接收一个变量。如果我们想写一个接收两个变量的函数,则需要把它写成复合函数的形式,也就是第一个函数的输出结果是紧接着第二个函数的输入变量。
例如,这样一个函数 g ( x , y ) = x ∗ x + y ∗ y g(x, y) = x * x + y * y g(x,y)=xx+yy在λ演算中应写为 λ x . λ y . x ∗ x + y ∗ y λx.λy.x * x + y * y λx.λy.xx+yy。比如,就这个函数而言,如果x = 5, y = 6,则 g ( 5 , 6 ) = 5 ∗ 5 +

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值