我已经写了一个haskell程序,它可以处理10000件事情。现在,仅仅为了它,我用100万美元跑了它,得到了stack space overflow
。如何诊断哈斯克尔堆栈溢出
我知道foldr/foldl问题以及可能由懒惰引起的问题,但是我目前不知道我的代码中的哪一部分导致了这个问题。
攻击这些问题的好方法是什么?
我已经写了一个haskell程序,它可以处理10000件事情。现在,仅仅为了它,我用100万美元跑了它,得到了stack space overflow
。如何诊断哈斯克尔堆栈溢出
我知道foldr/foldl问题以及可能由懒惰引起的问题,但是我目前不知道我的代码中的哪一部分导致了这个问题。
攻击这些问题的好方法是什么?
我发现Debug.Trace模块对此类事物很有用。在没有看到任何代码的情况下,很难提供一个有用的示例,但如果您查看该文档,则可能会找到一些有用的示例。否则,我会检查你的代码是否可以填充调用堆栈的非尾部递归。
真实世界Haskell有关于空间泄漏分析的章节:http://book.realworldhaskell.org/read/profiling-and-optimization.html – cdk
可能的重复[是否可能在Haskell中分析空间使用情况](http ://www.stackoverflow.com/questions/12426266/is-it-possible-to-profiling-space-usage-in-haskell) – cdk