如何使用runhaskell增加堆栈大小?

时间:2008-11-08 21:48:43

标签: haskell haskell-stack

我正在编写一些一次性Haskell脚本来解决一些Project Euler问题。我真的不想编译它们,因为我经常要做的改变很多,但在少数情况下我发现我的堆栈空间不足。

runhaskell的文档说明以下语法应该增加堆栈空间:

runhaskell +RTS -K5M -RTS Script.hs

这永远不会有效(在我试过的任何排列中)。堆栈大小始终为8,388,608。这令人抓狂,我在Google上找不到太多帮助。

有什么建议吗?我做错了什么?

3 个答案:

答案 0 :(得分:8)

我猜你正在使用GHC。新发布的6.10.1用户指南的第4章说:

  

目前唯一的runghc标志是-f   / path / to / ghc,告诉runghc哪个   GHC用于运行程序。

我没有在http://hackage.haskell.org/trac/ghc上看到错误。对我来说似乎很蹩脚。我建议询问irc #ghc或cvs-ghc邮件列表。

在其他Haskell编译器/解释器中,只有nhc98似乎允许您设置最大堆栈大小。根据您的操作系统,nhc98可能是一个选项。

答案 1 :(得分:1)

只需编译它。

Problem123.hs:

module Main where
main = do
    print solution
solution = ...

短而甜蜜的命令行:

ghc --make -O3 Problem123.hs
./Problem123

最后说明:我不确定我会称它们为“脚本”。

答案 2 :(得分:1)

我正在做同样的事情(Project Euler)并且一直在使用ghc。诀窍(感谢#haskell!)是告诉可执行文件有更多的堆栈大小而不是编译器

$ ghc -O2 -o 23 23.hs
$ ./23 +RTS -K128M