В библиотеке параллелизма GHC.Conc есть функция с именемnumCapabilities
. Его тип — numCapabilities :: Int
, и он фактически возвращает некоторое число, которое вы передали флагом командной строки (, например. 5
если опции+RTS -N 5
).
ОднакоgetArgs
(тип:IO [String]
)делает по существу то же самое (возвращает необработанные -аргументы среды выполнения ), но не является чистой функцией.
Если единственным оправданием является то, что numCapabilities
часто требуется в чистом коде, то каким образом другие параметры командной строки не не нужны в чистом коде?
Я что-то пропустил или это либо numCapabilities
недостаток дизайна, либо мне разрешено писать следующего монстра?
myGetArgs = unsafePerformIO getArgs