10

Project Eulerの問題のいくつかを解決するために、いくつかの使い捨て Haskell スクリプトを作成しています。常に変更を加えなければならないので、コンパイルする必要はありませんが、いくつかのケースでは、スタック領域が不足していることに気付きました。

のドキュメントにrunhaskellは、次の構文でスタック スペースを増やす必要があると記載されています。

runhaskell +RTS -K5M -RTS Script.hs

これは決して機能しません(私が試した順列では)。スタック サイズは常に 8,388,608 のままです。これは腹立たしいことです。Google ではあまり役に立ちませんでした。

助言がありますか?私は何を間違っていますか?

4

3 に答える 3

8

GHCを使用していると思います。新しくリリースされた 6.10.1 のユーザーズ ガイドの第 4 章には、次のように書かれています。

現在のところ、唯一の runghc フラグは -f /path/to/ghc であり、プログラムを実行するためにどの GHC を使用するかを runghc に指示します。

http://hackage.haskell.org/trac/ghcにバグが記録されていません。私にはかなり不自由に思えます。irc #ghc または cvs-ghc メーリング リストで質問することをお勧めします。

他の Haskell コンパイラ/インタプリタのうち、nhc98 だけが最大スタック サイズを設定できるようです。OS によっては、nhc98 がオプションになる場合があります。

于 2008-11-09T04:53:43.407 に答える
2

私は同じことをしており(Project Euler)、ghcを使用しています。トリック (#haskell に感謝!) は、実行可能ファイルにコンパイラではなく、より多くのスタック サイズを指定することです。

$ ghc -O2 -o 23 23.hs
$ ./23 +RTS -K128M
于 2009-01-10T23:46:56.930 に答える
1

コンパイルするだけです。

Problem123.hs:

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

短くて便利なコマンド ライン:

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

最後の注意: それらを「スクリプト」と呼ぶかどうかはわかりません。

于 2008-11-09T04:59:33.910 に答える