2008-11-08 196 views
9

我在写一些一次性的Haskell脚本来解决一些Project Euler问题。我不想编译它们是因为我经常需要做出的更改数量很多,但是在一些情况下,我发现我已经用完了堆栈空间。如何用runhaskell增加堆栈大小?

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

runhaskell +RTS -K5M -RTS Script.hs 

这永远,永远作品(以任意排列我试过)。堆栈大小始终为8,388,608。这令人生气,我在Google上找不到太多帮助。

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

回答

8

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

唯一runghc标志是目前-f /路径/到/ GHC,它告诉runghc GHC要使用的运行程序。

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

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

1

只要编译它。

Problem123.hs:

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

简短而亲切的命令行:

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

最后说明一点:我不知道我会叫他们 “脚本”。

+0

是的,使用--make很容易编译。但是,在OS X上的TextMate中打击R更容易,并使用runhaskell执行该文件。当你不断地改变事物时,它会更容易。 – 2008-11-09 07:15:55

1

我正在做同样的事情(项目欧拉),并已使用ghc。技巧(谢谢#haskell!)是告诉可执行文件有更多的堆栈大小,而不是编译器

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