Functional programming 使用Lambda表达式添加4

Functional programming 使用Lambda表达式添加4,functional-programming,lambda,lambda-calculus,Functional Programming,Lambda,Lambda Calculus,我知道使用lambda表达式,我们可以编写succ=λnfx•f(nfx)和两次=λfn•f(n)。我现在的目标是用这两个字母写add4,这两个字母在教堂的数字上加4 我该如何为此编写测试版缩减步骤 提前感谢您的帮助……嗯,两次成功是一个应用两次成功的函数,因此两次成功是一个应用两次成功的函数,从而应用四次成功。所以它应该是add4=tweeps(tweedsucc) 嗯,tweedsuch是一个应用suc两次的函数,因此tweedsuch(tweedsuch)是一个应用tweedsuch两次的

我知道使用lambda表达式,我们可以编写
succ=λnfx•f(nfx)
两次=λfn•f(n)
。我现在的目标是用这两个字母写add4,这两个字母在教堂的数字上加4

我该如何为此编写测试版缩减步骤


提前感谢您的帮助……

嗯,
两次成功
是一个应用两次成功的函数,因此
两次成功
是一个应用两次成功的函数,从而应用四次成功。所以它应该是
add4=tweeps(tweedsucc)


嗯,
tweedsuch
是一个应用
suc
两次的函数,因此
tweedsuch(tweedsuch)
是一个应用
tweedsuch
两次的函数,从而应用
suc
四次。所以它应该是
add4=tweeps(tweedsucc)


嗯,
tweedsuch
是一个应用
suc
两次的函数,因此
tweedsuch(tweedsuch)
是一个应用
tweedsuch
两次的函数,从而应用
suc
四次。所以它应该是
add4=tweeps(tweedsucc)


嗯,
tweedsuch
是一个应用
suc
两次的函数,因此
tweedsuch(tweedsuch)
是一个应用
tweedsuch
两次的函数,从而应用
suc
四次。所以它应该是
add4=tweeps(tweedsucc)

twice = λf.λn.(f (f n))
twice (twice succ)
=> twice (λf.λn.(f (f n)) succ)
=> twice λn.(succ (succ n))
=> λf.λn.(f (f n)) λn.(succ (succ n))
=> λf.λn.(f (f n)) λx.(succ (succ x))
=> λn.(λx.(succ (succ x)) (λx.(succ (succ x)) n))
=> λn.(λx.(succ (succ x)) (succ (succ n)))
=> λn.(succ (succ (succ (succ n))))
=> λn.(succ (succ (succ (succ n))))