On Tue, Sep 15, 2009 at 11:31 PM, Daniel Fischer
<daniel.is.fisc...@web.de> wrote:
> ...
> Yeah, you do *not* want the whole file to be read here, except above for 
> testing purposes.

That's not true. Sometimes I want to, sometimes don't. But I want to
use the same code for reading files and exploit laziness to avoid
reading the body.

> Still, ByteStrings are probably the better choice (if you want the body and 
> that can be
> large).

That's not a problem by now.

> To avoid reading the body without unsafePerformIO:
>
> readBit fn
>    = Control.Exception.bracket (openFile fn ReadMode) hClose
>          (\h -> do
>                l <- hGetLine h
>                let i = read l
>                bdy <- hGetContents h
>                return $ Bit i bdy)

Same problem with the "withFile"-version: nothing gets printed if I
try to print out the body: that's way I used seq.

I'm starting to think that the only way to do this without using
unsafePerformIO is to have the body being an IO action: simply, under
Haskell assumption, that's not possible to write, because Haskell
enforce safety above all.

Cristiano
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to