Для ghci
, я могу ограничить память, которую ghci может использовать
$ ghci +RTS -M10m -RTS
Когда я компилирую всю программу, я могу
$ ghc -rtsopts a.hs
затем
$ ./a +RTS -M10m
Как это сделать для runghc a.hs
? Я пробовал несколько способов, например runghc a.hs +RTS -M10m
, но ни один из них не работает. Единственный вариант, который я мог ограничить память, -
$ export GHCRTS='-M10m'
$ runghc a.hs
но я хочу, чтобы это было только один раз, поэтому я предпочитаю делать это, передавая аргументы runghc
.
Изменить: я проверяю, работает ли эта опция или нет, используя следующую стратегию (только потому, что я не знаю лучших способов):
-- a.hs
f x = f (f x)
main = print $ seq (f 0) 0
Откройте два терминала, один для команды top
и другой для выполнения кода. Если выполнение перестает говорить "Heap исчерпано", я делаю вывод, что -M[number]m
работает. Если выполнение продолжается и использует огромный объем памяти, я убиваю процесс и делаю вывод, что это не удалось.