当我运行./MyProgram +RTS -N4
时,我希望我的程序能够自动检测到它在4个核心上运行并创建4个火花来处理数据集。现在,我每次想要更改此选项时都会重新编译,这很烦人。
答案 0 :(得分:2)
回答您的原始问题:运行时选项是GHC特定的,GHC提供了一个模块,允许您查看传递给程序的完整参数列表(包括+RTS
和-RTS
) :GHC.Environment
。
这是一个小小的示范:
import GHC.Environment (getFullArgs)
import System.Environment (getArgs)
main = do
getFullArgs >>= mapM putStrLn
putStrLn "=="
getArgs >>= mapM putStrLn
return ()
将程序编译为ghc App.hs --make -rtsopts -threaded
将在执行时产生以下结果:
./App hello +RTS -N4 -RTS ook ooks
hello
+RTS
-N4
-RTS
ook
ooks
==
hello
ook
ooks