Почему numCapabilities — чистая функция?

В библиотеке параллелизма GHC.Conc есть функция с именемnumCapabilities. Его тип — numCapabilities :: Int, и он фактически возвращает некоторое число, которое вы передали флагом командной строки (, например. 5если опции+RTS -N 5).

ОднакоgetArgs(тип:IO [String])делает по существу то же самое (возвращает необработанные -аргументы среды выполнения ), но не является чистой функцией.

Если единственным оправданием является то, что numCapabilitiesчасто требуется в чистом коде, то каким образом другие параметры командной строки не не нужны в чистом коде?

Я что-то пропустил или это либо numCapabilitiesнедостаток дизайна, либо мне разрешено писать следующего монстра?

myGetArgs = unsafePerformIO getArgs

21
задан Aza 15 April 2013 в 03:14
поделиться