Виджет Haskell показывает, что вам необходимо установить флаг компиляции и флаг времени выполнения, чтобы получить поддержку многоядерных процессоров. Почему недостаточно использовать библиотеку для правильного поведения во время компиляции? Почему исполняемый файл во время выполнения не может скомпилировать его с помощью -threaded и использовать все ядра в системе, если не указано иное? Я думаю, что включить их по умолчанию было бы лучше. Тогда могут быть флаги для отключения или изменения этих функций.
http://www.haskell.org/haskellwiki/GHC/Concurrency#Multicore_GHC говорит:
Скомпилируйте свою программу с помощью переключателя -threaded. Запустите программу с помощью + RTS -N2, чтобы использовать, например, 2 потока. Вы должны использовать значение -N, равное количеству ядер ЦП на вашем компьютере (не считая ядер Hyper-threading).
Представляется несколько обременительным иметь флаги, которые необходимо установить как во время компиляции, так и во время выполнения. Являются ли эти флаги рудиментарными остатками усилий по добавлению concurrency в GHC?