
21 Feb
2008
21 Feb
'08
12:17 p.m.
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