【发布时间】:2017-06-07 19:00:24
【问题描述】:
我读到一篇关于 Haskell 中递归的文章说:
但是 lambda 演算并没有出现在表面上 由于表达式的匿名性,递归的方式。怎么做 你叫什么没有名字?能够编写递归 然而,函数对于图灵完备性是必不可少的。我们使用一个 组合器——称为 Y 组合器或定点组合器—— 在 lambda 演算中编写递归函数。 Haskell 有原生的 基于与 Y 组合器相同原理的递归能力。
本机递归是什么意思?
考虑以下代码sn-p:
applyTimes :: (Eq a, Num a) => a -> (b -> b) -> b -> b
applyTimes 0 f b = b
applyTimes n f b = f (applyTimes (n-1) f b)
上面的代码不符合Y combinator的原则,因为applyTimes是在函数体本身调用的,之前没有定义。
如果我错了,请证明我的回答。
【问题讨论】:
-
文章链接?
-
文章出自本书haskellbook.com。
-
我复制了这篇文章,请考虑。
-
“Haskell 具有本机递归能力”似乎是关键。