Functional programming 函数式编程的lambda演算
在lambda演算中(λx.λy.λs.λz.x s(y s z))用于两个教会数字的加法我们如何解释这一点,lambda演算对于函数式编程有什么好的资源吗?非常感谢你的帮助。λf2。λs。λz。(f1 s(f2 s z))计算加法,因为它实际上是将由f2表示的数字(f2 s z)代入(f1 s z)内的“零” 示例:让我们以两个为f2,Functional programming 函数式编程的lambda演算,functional-programming,lambda,lambda-calculus,Functional Programming,Lambda,Lambda Calculus,在lambda演算中(λx.λy.λs.λz.x s(y s z))用于两个教会数字的加法我们如何解释这一点,lambda演算对于函数式编程有什么好的资源吗?非常感谢你的帮助。λf2。λs。λz。(f1 s(f2 s z))计算加法,因为它实际上是将由f2表示的数字(f2 s z)代入(f1 s z)内的“零” 示例:让我们以两个为f2,sz展开形式。f1是一个:sz。用f2替换最后一个z,得到三个的扩展形式sz 用黑板和挥手会更容易,抱歉。在lambda演算中,您可以根据数据类型产生的操作来编
sz
展开形式。f1是一个:sz
。用f2替换最后一个z
,得到三个的扩展形式sz
用黑板和挥手会更容易,抱歉。在lambda演算中,您可以根据数据类型产生的操作来编写数据类型。例如,布尔值是一个选择函数,它接受两个输入值a和b,并返回a或b:
true = \a,b.a false = \a,b.b
自然数有什么用?其主要计算目的是
提供对迭代的绑定。所以,我们把一个自然数编码为一个算子
它接受一个函数f和一个值x的输入,并迭代应用程序
f与x的比值为n倍:
n = \f,x.f(f(....(f x)...))
f出现n次
现在,如果要从x开始迭代函数f的n+m倍
您必须开始迭代n次,即(nFx),然后迭代m
从上一个结果开始的附加时间,即
m f (n f x)
类似地,如果要迭代n*m次,则需要迭代m次
迭代n次f的操作(如在两个嵌套循环中),即
前面的数据类型编码更正式地解释为
建造商和相应的消除器(所谓
Bohm Berardocci编码)。检查页面右侧的“相关”部分:,等等。
m (n f) x