Carcigenicate

Parallel Test 2

Nov 11th, 2014
402
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import Control.DeepSeq
  2. import Control.Parallel
  3. import Control.Monad
  4.  
  5. fpseq,fpar :: NFData a => a -> b -> b
  6. fpseq a = pseq (force a)
  7. fpar a = par (force a)
  8.  
  9. test1 = a + b + c
  10.  
  11. test2 :: Int
  12. test2 = a `fpar` b `fpar` c `fpseq` (a + b + c)
  13.  
  14. main = print test2
  15.  
  16. a = ack 3 9
  17. b = fac 10
  18. c = fib 10
  19.        
  20. fac 0 = 1
  21. fac n = n * fac (n-1)
  22.  
  23. ack 0 n = n+1
  24. ack m 0 = ack (m-1) 1
  25. ack m n = ack (m-1) (ack m (n-1))
  26.  
  27. fib 0 = 0
  28. fib 1 = 1
  29. fib n = fib (n-1) + fib (n-2)
Advertisement
Add Comment
Please, Sign In to add comment