我在Haskell中编写了自己的'sum'函数:
mySum [a] = a
mySum (a:as) = a + mySum as
Run Code Online (Sandbox Code Playgroud)
并测试它
main = putStrLn . show $ mySum [1 .. 400000000]
Run Code Online (Sandbox Code Playgroud)
仅收到堆栈溢出错误.
以相同的方式使用Prelude的总和:
main = putStrLn . show $ sum [1 .. 400000000]
Run Code Online (Sandbox Code Playgroud)
我没有堆栈溢出.
它可能是我正在评估的巨大列表,特别是如果传递给我的函数的列表正在严格评估,尽管我不怀疑这个的唯一原因是使用Prelude的总和与相同的列表我没有得到任何错误.