You can simply upgrade to GHC 7, which is part of the Haskell Platform, which includes:
On POSIX platforms, there is a new I/O manager based on epoll/kqueue/poll, which allows multithreaded I/O code to scale to a much larger number (100k+) of threads
In particular:
Architecturally, our new I/O manager consists of two components. Our event notification library provides a clean and portable API,
and abstracts the system-level mechanisms used to provide efficient
event notifications (kqueue, epoll, and poll). We have also written a shim that implements the semi-public threadWaitRead and
threadWaitWrite interfaces. This means that neither the core file
or networking libraries, nor other low-level I/O libraries, require
any changes to work with—and transparently benefit from the performance improvements of—our new code.
That is, just upgrade, and things work magically better.
Here's some reading material: