(Food for thought: why `parList rseq` instead of `parList r0`?
Reply to the Haskell-Cafe posting if you think you know why!)
Because with `r0` you're liable to just parallel evaluate to the thunk containing the computation you're trying to parallelize, and the actual computation then takes place later *outside* the parallel section? (That is, what comes out of parList is a list of the thunks passed to `r0`, otherwise unevaluated. You wrapped them in an `id` and then parallel evaluated the `id` away, real useful that. :) You need to go at least to WHNF, then it comes down to the strictness specified in what's passed to `rseq`.
--
brandon s allbery