Haskell 我可以在程序中更改堆栈大小限制吗?

Haskell 我可以在程序中更改堆栈大小限制吗?,haskell,stack,ghc,Haskell,Stack,Ghc,我可以通过向GHC编译的Haskell程序传递+RTS-Kn来配置它的最大堆栈大小,其中n是一些数字 有没有办法在程序中更改此设置 (我想对各种函数的堆栈消耗进行基准测试,并因此尝试以各种限制运行它,捕获堆栈溢出异常。)时间用“否”回答了这个问题“似乎没有API来执行此操作,但应该可以从CMM代码或通过FFI修改RtsFlags.GcFlags.maxStkSize。我不知道这有多安全(增加限制可能没问题,减少可能没问题).Safe API确实是对GHC的一个很好的补充。为什么不打开一个bug呢

我可以通过向GHC编译的Haskell程序传递
+RTS-Kn
来配置它的最大堆栈大小,其中
n
是一些数字

有没有办法在程序中更改此设置


(我想对各种函数的堆栈消耗进行基准测试,并因此尝试以各种限制运行它,捕获
堆栈溢出
异常。)

时间用“否”回答了这个问题“

似乎没有API来执行此操作,但应该可以从CMM代码或通过FFI修改
RtsFlags.GcFlags.maxStkSize
。我不知道这有多安全(增加限制可能没问题,减少可能没问题).Safe API确实是对GHC的一个很好的补充。为什么不打开一个bug呢?现在你可能想使用
-with-rtsopts
在编译时定义它。不确定;根据(默认情况下没有堆栈大小限制)这实际上可能与大多数用户无关。当argv不包含一些魔旗时,您可以重新执行自己的操作,并添加+RTS-Kn和该魔旗。(我一直在shell脚本中(尤其是在sudo前)执行该操作,偶尔在C中执行一次。)但这是Unix特有的。