我应该写一个对列表理解块中的元素求和的函数。
让我们以这两个功能为例:
preg_replace
问题:
答案 0 :(得分:7)
第二个函数将计算总和两次–此处无需进行显式共享,Haskell也不执行备注(来源:When is memoization automatic in GHC Haskell?)
let
允许一次计算总和并在多个地方使用,因此第一个函数会稍微更快。
编辑:
在评论中有人提到CSE(常见子表达式消除)可能是此处可能发生的优化。我尝试使用-ddump-cse
编译您的函数来发现它是否会发生,但是尽管我没有提到normalSum
,但输出对我来说太神秘了。但是,如果您构建的函数没有-O*
标志,我的回答应该是正确的。如果我找到答案,将会更新我的答案。