
For any associative binary operator (+) with an identity element z, foldl and foldr are equivalent, that is, foldl (+) z === foldr (+) z The first yields something like ((z + a) + b) + c whereas the second yields a + (b + (c + z)) but with associativity and the fact that z is an identity it is not hard to see that these are equal. However, as you found out, that does not necessarily mean they have the same performance! Since atop is associative you could just replace foldl with foldr. In fact, atop is the binary operation for the Monoid instance of diagrams, so you can just write 'mconcat' in place of 'foldr atop mempty'. -Brent On Wed, May 15, 2013 at 09:35:34AM +0200, Giacomo Tesio wrote:
Thanks a lot!
Yesterday on freenode's #haskell channel Cane noted how my laziness problem reside in the foldl use in foldTradingSample. I have to turn it into a foldr (but I'm still unsure how...)
Giacomo
On Wed, May 15, 2013 at 12:46 AM, Henk-Jan van Tuyl
wrote: On Tue, 14 May 2013 11:22:27 +0200, Giacomo Tesio
wrote: Hi, I'm trying to improve a small haskell program of mine.
:
Some remarks:
0) Use hlint (available on Hackage) for improvement suggestions 1) You don't have to write the module heading in Main.hs, it is not a library (why export main?) 2) Change "print" to "putStrLn" if you want to display messages without quotes 2) switchArgs is only partially defined, add something like: switchArgs [x] = putStrLn $ "Unknown tool: " ++ x 3) Use shorter lines, for example change:
importTrades outDir csvFile = transformFile csvFile (foldTradingSample.* *getTickWriteTrades) (saveTradingSamples outDir)
to:
importTrades outDir csvFile = transformFile csvFile (foldTradingSample.**getTickWriteTrades) (saveTradingSamples outDir) 4) It is considered good practice, to write the function composition operator between spaces (change f.g to f . g)
I have analyze your software further to see how sufficient laziness can be reached.
Regards, Henk-Jan van Tuyl
-- Folding@home What if you could share your unused computer power to help find a cure? In just 5 minutes you can join the world's biggest networked computer and get us closer sooner. Watch the video. http://folding.stanford.edu/
http://Van.Tuyl.eu/ http://members.chello.nl/**hjgtuyl/tourdemonad.htmlhttp://members.chello.nl/hjgtuyl/tourdemonad.html Haskell programming --
______________________________**_________________ Beginners mailing list Beginners@haskell.org http://www.haskell.org/**mailman/listinfo/beginnershttp://www.haskell.org/mailman/listinfo/beginners
_______________________________________________ Beginners mailing list Beginners@haskell.org http://www.haskell.org/mailman/listinfo/beginners