Как я могу увеличить размер стека с помощью runhaskell? - PullRequest
9 голосов
/ 09 ноября 2008

Я пишу несколько одноразовых скриптов на Haskell для решения некоторых проблем Project Euler . Я действительно не хочу их компилировать из-за того, что мне постоянно приходится вносить изменения, но в некоторых случаях я обнаружил, что у меня не хватает стека.

В документации для runhaskell сказано, что следующий синтаксис должен увеличить пространство стека:

runhaskell +RTS -K5M -RTS Script.hs

Это никогда, никогда не работает (в любой перестановке, которую я пробовал). Размер стека всегда остается 8,388,608. Это сводит с ума, и я не нашел большой помощи в Google.

Есть предложения? Что я делаю не так?

Ответы [ 3 ]

8 голосов
/ 09 ноября 2008

Полагаю, вы используете GHC. Глава 4 Руководства пользователя недавно выпущенного 6.10.1 гласит:

Единственный флаг runghc в настоящее время это -f / путь / к / GHC, который говорит runghc, который GHC для запуска программы.

Я не вижу ошибку, зарегистрированную в http://hackage.haskell.org/trac/ghc. Кажется, довольно хромой для меня. Я бы посоветовал спросить об irc #ghc или в списке рассылки cvs-ghc.

Из других компиляторов / интерпретаторов Haskell только nhc98 позволяет вам установить максимальный размер стека. В зависимости от вашей ОС, nhc98 может быть вариантом.

1 голос
/ 11 января 2009

Я делаю то же самое (Project Euler) и использую ghc. Хитрость (спасибо #haskell!) Заключается в том, чтобы сообщить исполняемому файлу , что он имеет больший размер стека, чем компилятор .

$ ghc -O2 -o 23 23.hs
$ ./23 +RTS -K128M
1 голос
/ 09 ноября 2008

Просто скомпилируйте.

Problem123.hs:

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

Короткая и приятная командная строка:

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

Последнее замечание: я не уверен, что назвал бы их "сценариями".

...