Functional programming 函数式编程的lambda演算

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演算中,您可以根据数据类型产生的操作来编

在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演算中,您可以根据数据类型产生的操作来编写数据类型。例如,布尔值是一个选择函数,它接受两个输入值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