import Control.Parallel.Strategies main = do let top = 100000000 ; threads = 4 print $ psum $ do t <- [ 0 .. threads - 1 ] return $ sum [ t, t + threads .. top - 1 ] psum [] = 0 psum (x : xs) = (x `using` rpar) + psum xs