> So what am I missing here?
The Haskell program is multi-threaded (I don't know about wc's official implementation, but I assume it is as well), while the D program is single-threaded.
The Haskell program is multi-threaded (I don't know about wc's official implementation, but I assume it is as well), while the D program is single-threaded.
At least not at all obviously. No obvious header included and no mention of threads. I only checked the code [1] very quickly, though.
[1] https://git.savannah.gnu.org/gitweb/?p=coreutils.git;a=blob;...
If adding threads increases the speed, this implies that the program is both CPU-bound and that it has opportunities for parallelism.