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

最佳答案

回答您的原始问题:运行时选项特定于GHC,并且GHC提供了一个模块,该模块使您可以查看传递给程序+RTS的完整参数列表(包括-RTSGHC.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

关于haskell - 是否有一个用于检测设置哪些RTS标志的库?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12737621/

10-09 03:41