有没有办法在递归深度或内存受限模式下 运行 一个 Haskell 控制台?

Is there a way to run a Haskell console in a recursion depth or memory limited mode?

问题是:有时,在使用 GHCI 时,我会错误地 运行 进行无限计算。发生这种情况时,大多数情况下,我的计算机会崩溃,我什至无法使用 Ctrl+C 中断它。 我想知道是否有一种方法可以让 运行 GHCI(或其他交互式控制台,如 Hugs)在某种模式下允许我在内存 运行 耗尽之前中断程序。也许为递归深度或使用的内存设置虚拟限制。

(这个问题可能与 Is there a way to limit the memory, ghci can have? 重复,但这也考虑了递归深度限制的可能性,而不仅仅是内存限制。)

您可以尝试在启动 GHCi 时使用 RTS options to control the garbage collector。例如,

ghci +RTS -M100M -RTS Foo.hs

应将内存限制为 100MB。或者,使用 -Ksize 来限制堆栈(默认情况下限制为堆的 80%)。