We can use
rseq :: Strategy a to force an argument to Weak Head Normal Form:
f1 :: [Int] f1 = [1..100000000] f2 :: [Int] f2 = [1..200000000] main = runEval $ do a <- rpar (f1) -- this'll take a while... b <- rpar (f2) -- this'll take a while and then some... rseq a return (a,b)
This subtly changes the semantics of the
rpar example; whereas the latter would return immediately whilst computing the values in the background, this example will wait until
a can be evaluated to WHNF.