我可以通过传递+RTS -Kn给它来配置GHC编译的Haskell程序的最大堆栈大小,其中n有一些数字.
有没有办法在程序中更改此设置?
(我想对各种函数的堆栈消耗进行基准测试,因此尝试以各种限制运行它,捕获StackOverflow异常.)
我期待看到我的堆栈与以下代码打击..但它没有:
*Main> let blowwss x = if x == 0 then 0 else (1 + blowwss (x-1))
*Main> blowwss 1000000
1000000
Run Code Online (Sandbox Code Playgroud)
该函数似乎不是尾递归,所以我想知道我可能缺少什么.GHCi的堆栈是否比我想象的要大(我怎么能看到它的堆栈大小,顺便说一下?).它是否使用某种蹦床来克服这个问题?它是否足够智能将函数转换为迭代对应物?
谢谢