【发布时间】:2014-08-14 18:06:46
【问题描述】:
我知道使用 lambda 表达式,我们可以写出succ = λnfx • f (n f x ) 和twice = λfn • f f(n )。我现在的目标是用这两个写 add4 ,在教堂数字上加 4。
如何为此编写 beta 缩减步骤?
提前感谢您的帮助...
【问题讨论】:
标签: functional-programming lambda lambda-calculus
我知道使用 lambda 表达式,我们可以写出succ = λnfx • f (n f x ) 和twice = λfn • f f(n )。我现在的目标是用这两个写 add4 ,在教堂数字上加 4。
如何为此编写 beta 缩减步骤?
提前感谢您的帮助...
【问题讨论】:
标签: functional-programming lambda lambda-calculus
好吧,twice succ 是一个应用两次succ 的函数,所以twice (twice succ) 是一个应用两次twice succ 的函数,从而应用了四次succ。所以应该是add4 = twice (twice succ)。
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))))
【讨论】: