From a790eaa34b6f9ac233dd6c58e11ace9ba2b635f3 Mon Sep 17 00:00:00 2001 From: Miguel Date: Sun, 17 Mar 2019 18:29:29 +0100 Subject: added some snippet --- snip/snip.hs | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'snip/snip.hs') diff --git a/snip/snip.hs b/snip/snip.hs index 4b7b461..cf2db1f 100644 --- a/snip/snip.hs +++ b/snip/snip.hs @@ -1,8 +1,16 @@ import Control.Monad.Writer import Control.Monad.State +import Data.Tuple.Extra (dupe,first,second) +import System.Environment (getArgs) +import Control.Parallel.Strategies (parMap,rseq,rdeepseq) + +main = do + mainMonTra + mainParMap + -- monad transformers in action -main = print $ +mainMonTra = print $ runState ( runWriterT ( get >>= \a -> @@ -12,3 +20,10 @@ main = print $ tell [show a] ) ) 5 + +-- parallel Map arguments: sparks maps +mainParMap = do + (sparks:max:_) <- fmap (map read) getArgs + let ranges = uncurry zip . second tail . dupe $ [0,(max`div`sparks)..max] + let sums = parMap rdeepseq (\(a,b)->sum [a+1..b]) ranges + print $ show (sum sums::Integer) -- cgit v1.2.3