我试图了解在runhaskell
.
有问题的程序是:
isFactor n = (0 ==) . (mod n)
factors x = filter (isFactor x) [2..x]
main = putStrLn $ show $ sum $ factors 10000000
当我运行它时,它需要 1.18 秒。
但是,如果我重新定义isFactor
为:
isFactor n f = (0 ==) (mod n f)
然后程序需要 17.7 秒。
这是性能上的巨大差异,我希望这些程序是等效的。有人知道我在这里想念什么吗?
注意:在 GHC 下编译时不会发生这种情况。