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