On Saturday 22 May 2010 16:48:27, Daniel Fischer wrote: > The boxing is due to the use of (^). > If you write x*x instead of x^2, it can use the primop *## and needn't > box it. > As a side effect, the original time leak probably wouldn't have occured > with x*x instead of x^2 because one would've made it > let x = newton a (n-1) in (x*x +a) / (2*x) > instead of writing out newton a (n-1) thrice anyway, wouldn't one? >
Even if. With newton :: Double -> Int -> Double newton a 0 = a newton a n = (((newton a (n-1)) * (newton a (n-1)) ) + a)/(2*(newton a (n-1))) (and optimisations of course), GHC does share newton a (n-1). Lesson: Writing x^2 is a baad thing. _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe