[Haskell-cafe] Lazy Lists and IO
Andrew Coppin
andrewcoppin at btinternet.com
Wed Jul 11 15:02:48 EDT 2007
Stefan O'Rear wrote:
> Unfortunately, ignoring purity is fraught with peril. One notable
> example recently is in HAppS, a Haskell web framework. Alex Jacobson (a
> haskeller of significant note, not some "clueless newbie") accidentally
> wrote { length xs > 0 } instead of { not (null xs) } in some parsing
> code. Which would just be inefficient, normally, but it demanded the
> whole thing, which as it happened was a lazy stream coming of a socket.
> Bad data dependencies, bang, deadlock.
>
Ouch! That's gotta sting...
I wasn't aware that this function was so leathal. I use it constantly
all the time...
> Option 2. Ignore lists
>
> It's possible to describe lists threaded with something else.
>
> data ListT m a = m (ListT' m a)
> data ListT' m a = NilT | ConsT a (ListT m a)
>
> You get your safety back ... and lose the standard list functions, list
> syntax, list comprehensions, list instances, strings-as-lists, et
> cetera.
>
That's... interesting...
(I feel yet another "I'm going to have to sit down and think about that
one" comming on.)
More information about the Haskell-Cafe
mailing list