[Haskell-cafe] Re: Left fold enumerator - a real pearl overlooked?

John A. De Goes john at n-brain.net
Tue Mar 3 07:38:52 EST 2009


Lazy IO is a complete disaster for "interactive IO", such as network  
and process IO. Moreover, it's somewhat of a failure even for non- 
interactive IO such as the use case you described, because it's very  
easy for partial evaluation to lead to unclosed files and lazy  
evaluation to lead to delayed resource acquisition. I can imagine a  
few use cases that might benefit from it, but the evidence suggests  
that most developers trying to solve "real world" problems work extra  
hard to get their programs working properly with lazy IO.

Elsewhere, laziness can be a real boon, so I don't understand your  
question, "Why have laziness in Haskell at all?"

Regards,

John A. De Goes
N-BRAIN, Inc.
The Evolution of Collaboration

http://www.n-brain.net    |    877-376-2724 x 101

On Mar 2, 2009, at 6:03 PM, Henning Thielemann wrote:

>
> On Mon, 2 Mar 2009, John Lato wrote:
>
>> Hello,
>>
>> I am not a super-geek (at least, not compared to others on this  
>> list),
>> but I'll take a try at this anyway.  The benefits of iteratees mostly
>> depend on differences between lazy and strict IO (see ch. 7 of Real
>> World Haskell for more on this).
>
> Maybe a good text for
>   http://www.haskell.org/haskellwiki/Enumerator_and_iteratee
> ?
>
> While I think that the Iteratee pattern has benefits, I suspect that  
> it can't be combined with regular lazy functions, e.g. of type [a] - 
> > [a]. Say I have a chain of functions: read a file, parse it into a  
> tag soup, parse that into an XML tree, transform that tree, format  
> that into a string, write that to a file, and all of these functions  
> are written in a lazy way, which is currently considered good style,  
> I can't use them in conjunction with iteratees. This means, almost  
> all Haskell libraries have to be rewritten or extended from lazy  
> style to iteratee style. The question for me is then: Why having  
> laziness in Haskell at all? Or at least, why having laziness by  
> default, why not having laziness annotation instead of strictness  
> annotation.
>
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe



More information about the Haskell-Cafe mailing list