2008-11-08 193 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