Искры не являются нитями. forkIO
представляет потоки на Haskell (которые отображаются на меньшее количество реальных потоков ОС). Искры создают записи в рабочих очередях для каждого потока, из которых они будут выполнять задачи, выполняемые в случае простоя потока.
В результате искры очень дешевы (их может быть в программе миллиарды, а у вас, вероятно, не будет более миллиона потоков на Haskell и менее десятка потоков ОС на полдюжине ядер).
Думайте об этом так:
![spark model](https://i.stack.imgur.com/f57Hm.png)