-- | Parallelism -- An examples on how to speed up computations by doing things in parallel -- Functional Programming course 2017. -- Thomas Hallgren {- This started as a skeleton, the definitions were filled in during the lecture. -} import Control.Parallel main = print (fib 43) -- | Parallel (but still inefficient) computation of Fibonacci numbers fib :: Int -> Int fib 0 = 1 fib 1 = 1 fib n | n<=34 = fib (n-1) + fib (n-2) fib n = par f1 (par f2 (f1+f2)) where f1 = fib (n-1) f2 = fib (n-2) {- -- | Inefficient computation of Fibonacci numbers fib :: Int -> Int fib 0 = 1 fib 1 = 1 fib n = fib (n-1) + fib (n-2) -} {- We tested this by compiling the program and timing the execution: ghc --make -O -threaded Fib.hs time ./Fib time ./Fib +RTS -N2 time ./Fib +RTS -N4 time ./Fib +RTS -N8 -}