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