【发布时间】:2013-10-29 13:19:14
【问题描述】:
来自http://www.haskell.org/haskellwiki/Testing_primality,有这段代码:
isPrime n = n > 1 &&
foldr (\p r -> p*p > n || ((n `rem` p) /= 0 && r)) True primes
其中 primes 是一个素数列表(可能是无限的)。
两个问题:
- 如何读取传递给
foldr函数的 lambda - 既然
foldr从右边开始,为什么这个函数在传递一个无限的素数列表时会起作用?我猜 lambda 中存在短路?
【问题讨论】:
-
您问:“如何翻译 lambda?”。我问,“翻译成什么?”。
-
谢谢,为澄清而编辑。 +1 链接——我还没有完全理解折叠是如何工作的
标签: haskell primes lambda primality-test