Luke Andrew wrote:
   import Control.Parallel

   fib1 n = if n == 0 then 0 else if n == 1 then 1 else fib1 (n-1) +
fib1 (n-2)
   fib2 n = if n == 0 then 0 else if n == 1 then 1 else fib2 (n-1) +
fib2 (n-2)

   main = do print $ (fib2 37 `par` fib1 37) + (fib2 37)


"fib2 37" won't be shared.

You're telling ghc to calculate fib2 37 once, in parallel, throw it away, and then calculate it again.

Try:

let f1 = fib1 37
    f2 = fib2 37
in print $ (f2 `par` f1) + f2

Jules
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to