私はHaskellのアルゴリズムパズルを解決しようとしており、そうするためにはかなり大きなデータ構造が必要です。しかし、私が解決策を提出する問題解決サイトでは、より大きなスタックを可能にする実行時オプションは使用しませんが、コンパイラオプションをプラグマとして使用できると聞いてきました。私は自分のコードに次のプラグマを使用して試してみた:プラグマとして-with-rtsopts ghcオプションを使用する
{-# OPTIONS_GHC -O2 -rtsopts -with-rtsopts=-K32m #-}
その後、私はghc --make algo.hs
でコンパイルします。しかし、いくつかの大きなテストでマシンを実行すると、プログラムがスタックオーバーフローでクラッシュし、現在のスタックサイズが8MBであることが報告されます。一方、私はそのようにコンパイルする場合:
ghc -rtsopts -with-rtsopts=-K32M --make algo.hs -fforce-recomp
プログラムは、任意の+RTS
引数を追加することなく、同じデータにうまく動作します。私はGHC 7.0.2を使用していますが、問題解決サイトでは6.12.3を使用していますので、古いバージョンでもうまく機能するソリューションを探しています。 ( - >.o
.hs
)、およびリンク(.o
、.a
、.lib
- 実際のオブジェクトのコンパイルを>実行/ .exe
/.so
/.dll
など: