[Haskell-cafe] Re: hamming distance allocation

Heinrich Apfelmus apfelmus at quantentunnel.de
Wed Apr 21 04:41:36 EDT 2010


Arnoldo Muller wrote:
> 
> I believe these problems are one of the major sources of frustration for
> Haskell newbies. Things that could work in <X> language easily suddenly
> become problems in Haskell. When you overcome these issues then you feel
> happy again that you chose Haskell as the main programming language of your
> research project.

Well, the difference between <X> and Haskell is pretty much unavoidable.
If you care about space and time usage, then there is no way around
learning about lazy evaluation and Haskell's execution model.

> Is there any guide that explains more about the "bad consumption pattern".
> Are there any general rules defined to avoid these issues? It helped me to
> re-read the chapter on profiling in the Real World Haskell book to sorta
> understand the problem. Is there a more detailed definition of the problem
> than in RWH?

Two of the most commonly occurring patterns are

  1) foldl' vs foldl

  2) average xs = sum xs / length xs
     vs
     average = uncurry (/) . foldl' (\(!s,!n) x -> (s+x,n+1)) (0,0)

Other than that, most Haskell books offer a clear exposition of the
reduction model. For instance, there is

   Graham Hutton. Programming in Haskell, chapter 12.
   Richard Bird. Introduction to Functional Programming using Haskell
       2nd edition, chapter 7.

The wikibook contains some preliminary material, too.

   http://en.wikibooks.org/wiki/Haskell/Graph_reduction



Regards,
Heinrich Apfelmus

--
http://apfelmus.nfshost.com



More information about the Haskell-Cafe mailing list