gpt4 book ai didi

Haskell 折叠和堆栈溢出?

转载 作者:行者123 更新时间:2023-12-04 22:16:16 25 4
gpt4 key购买 nike

我读了一篇帖子声称 foldl 可能很容易发生堆栈溢出。发布示例代码是:

maximum [1..1000000]

代码没有在我的机器中溢出。但是,它可能因环境而异。我增加了这样的数字:
maximum [1..1000000000]

它导致了硬盘交换,所以我不得不停止评估。
示例代码并不重要。真的会发生堆栈溢出吗?还是只是一个旧时代的故事?

最佳答案

几点

  • 递归函数每次调用都会占用栈空间,所以深度嵌套的调用会导致溢出
  • 尾递归函数可以针对迭代进行优化,因此不会溢出
  • foldr 不是 尾递归
  • 延迟求值可以防止尾递归函数被优化
  • foldl 是尾递归和惰性的,所以它可以溢出
  • foldl' 是尾递归且严格的,所以它是安全的
  • 关于Haskell 折叠和堆栈溢出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4977417/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com