是否有用于检测设置了哪些RTS标志的库?

时间:2012-10-04 23:50:48

标签: haskell ghc

当我运行./MyProgram +RTS -N4时,我希望我的程序能够自动检测到它在4个核心上运行并创建4个火花来处理数据集。现在,我每次想要更改此选项时都会重新编译,这很烦人。

1 个答案:

答案 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