gpt4 book ai didi

haskell - 分离不同 hs 文件中的函数时堆栈空间溢出

转载 作者:行者123 更新时间:2023-12-04 17:12:27 26 4
gpt4 key购买 nike

我有一个巨大的 haskell 文件,可以毫无问题地编译和运行。我想将一些函数和类型定义放在通用 hs 文件中的单独模块中,然后将其导入我的主模块中。虽然主程序编译没有任何错误(它也编译导入的模块),但当我尝试运行它时出现堆栈空间溢出。

我试过:

ghc --make -O2 Main.hs
./Main -- stack space overflow

还:
ghc --make -O2 Main.hs Other.hs -o RunMe
./RunMe -- again, stack space overflow

这是编译的正确方法还是我遗漏了什么?

最佳答案

您正在正确编译它。问题一定出在代码本身。将其拆分为不同的模块可能会导致 GHC 以不同的方式应用优化,从而导致此问题浮出水面。

一个可能的原因是 GHC 以前能够使用严格性分析来生成在恒定堆栈空间中运行的程序。将模块一分为二导致 GHC 不再能够做出相同的严格性假设,因此无法保证使函数严格是安全的。

解决方案可能是添加您自己的严格性注释或使用导致此问题的任何函数的严格版本。

关于haskell - 分离不同 hs 文件中的函数时堆栈空间溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6863984/

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