[Haskell-cafe] Re: Tutorial uploaded

Henning Thielemann lemming at henning-thielemann.de
Wed Dec 21 08:50:33 EST 2005


On Wed, 21 Dec 2005, Creighton Hogg wrote:

> On Wed, 21 Dec 2005, Henning Thielemann wrote:
>
> > The drawback is that I saw many Haskell programs implemented with IO
> > read/write functions which could be easily implemented without IO, using
> > laziness.
>
> Can you think of any examples of things like that?  Given
> that I'm still learning how to take advantage of laziness
> it'd be pretty interesting.

Some example for writing a text the IO oriented way:
  do putStrLn "bla"
     replicateM 5 (putStrLn "blub")
     putStrLn "end"

whereas the lazy way is
  putStr (unlines (["bla"] ++ replicate 5 "blub" ++ ["end"]))

You see that the construction of the text is separated from the output,
but the effect is rather the same in both variants: The text is
constructed simultaneously with output. You could also make the separation
explicit:

text :: String
text = unlines (["bla"] ++ replicate 5 "blub" ++ ["end"])

main = putStr text



More information about the Haskell-Cafe mailing list