I completely agree that laziness enables a number of nice coding idioms and, as Lennart described so eloquently, it does facilitate a combinator-based coding style among other things:
http://augustss.blogspot.com/2011/05/more-points-for-lazy-evaluation-in.html (Note that even Bob admits that this is an advantage.) What I meant is that if asked what is more important about Haskell, its laziness or purity, I think most people would pick purity. (But then it's a strange decision to make as laziness implies a need for purity as discussed.) Manuel Jan-Willem Maessen: > On Tue, May 3, 2011 at 1:32 AM, Manuel M T Chakravarty > <c...@cse.unsw.edu.au> wrote: >> ... Interestingly, today (at least the academic fraction of) the Haskell >> community appears to hold the purity of the language in higher regard than >> its laziness. > > As someone who implemented Haskell with quite a bit less laziness, I'm > inclined to agree. > > That said, I think it's easy to underestimate just how much of the > structure of the language really encourages a lazy evaluation > strategy. One example: where blocks scope over groups of conditional > RHSs. This is very handy, in that we can bind variables that are then > used in some, but not all, of the disjuncts. Grabbing the first > example that comes to hand from my own code: > > tryOne (gg, uu) e > | not (consistent uu) = (gg', uu) > | uu==uu' = (gg, uu) > | otherwise = (gg', uu') > where gg' = gg `addEquation` e > uu' = uu `addEquation` e > > This kind of thing happens all over the place in Haskell code -- it's > a very natural coding style -- but if you want to preserve purity it's > tough to compile without laziness. > > -Jan-Willem Maessen _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe