lamda运算学习笔记

lamda -> L

lamda演算至少从表面上看,有着这样一种企图: 将所有运算操作,以及自然数都抽象成“函数”(再一次见识到函数这个概念的伟大)。下面简单的介绍下lamda演算
lamda演算的原始定义看起来比较无聊:

(Lx. [fx]) a = fa

上式用熟悉的概念翻译,就是自变量为x的函数f(x),代入x=a,得f(a)
但是这里有一个扩展:不仅f本身是函数,而且x和a也是函数!而且f也可以作为自变量,即

(Lf. [fx]) g = gx

至此,可以看出,“L”后面至“.”前面的符号其实就是自变量
接下来我们可以看看如何用这种定义表示自然数:
考虑复合函数的表示:

(Lf. [f(fx)]) g = g(gx)

如果做的更彻底一些,把x也当做自变量(没错,这就是二元函数的表示):

Lf. [Lx. [f(fx)]]

将上式缩写为

Lfx. [f(fx)]

并且将“2”的“函数”表达形式,定义为:

2 = Lfx. [f(fx)] (此时,"2"是一个函数而不仅仅是一个数字)

于是,我们有这么一个结论:2重复合函数表示“2”
类似地,我们得到其他自然数的定义:

3 = Lfx. [f(f(fx))]
4 = Lfx. [f(f(f(fx)))]
1 = Lfx. [fx]
0 = Lfx. [x]
... ...

接下来,lamda演算的神奇之处在此展开:
考虑函数S = Labc. [b((ab)c)] 的用处,将3代入函数:

S 3 
= Labc. [b((ab)c)] 3
= Lbc. [b((3 b)c)] (实际上即代入a = 3)
= Lbc. [b(b(b(bc)))]
= 4

可见,S的作用就是“+1”操作

上述函数S的神奇之处在于,运用完全抽象的函数运算,取代具体的算术运算。


【写于2012年11月】



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值