【发布时间】:2011-03-17 08:54:06
【问题描述】:
我对 Haskell 几乎一无所知,并试图解决一些 Project Euler 问题。 在解决Number 5 时,我编写了这个解决方案(针对 1..10)
--Check if n can be divided by 1..max
canDivAll :: Integer -> Integer -> Bool
canDivAll max n = all (\x -> n `mod` x == 0) [1..max]
main = print $ head $ filter (canDivAll 10) [1..]
现在我发现,all 是这样实现的:
all p = and . map p
这不是说,每个元素都检查条件吗?打破条件的第一个错误结果会不会快得多?这将使上述代码的执行速度更快。
谢谢
【问题讨论】:
标签: haskell