Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import Control.Parallel.Strategies
- import Control.Monad
- import Control.DeepSeq
- sums :: [Int] -> Int
- sums xs = s + ds
- where
- s = foldl (+) 0 xs
- ds = foldl (\x acc -> (x*2) + acc) 0 xs
- sumsP :: [Int] -> Int
- sumsP xs = let fXs = force xs in
- (\(x,y) -> x + y) . runEval $ do
- s' <- rpar $ foldl (+) 0 fXs
- ds' <- rpar $ foldl (\x acc -> (x*2) + acc) 0 fXs
- rseq s'; rseq ds'
- return (s',ds')
- main = print $ sumsP [1..5000000]
Advertisement
Add Comment
Please, Sign In to add comment