> "Simon Marlow" <[EMAIL PROTECTED]> writes:
> > To really match the C program, you need to use IOExts.hGetBuf and
> > IOExts.hPutBuf, and do the operations on raw characters in memory.
> > Using a UArray of Word8 would be better, but there aren't any
> > operations to do IO to/from a UArray yet (actually I've written
> > these, but they aren't in the tree yet).
> 
> So why don't getContents / putStr / etc. deforest cleanly to calls to
> hGetBuf and hPutBuf?  I'm genuinely curious; my own experience in this
> direction is "The engineering is challenging".  These functions are so
> commonly used, though---and they're vastly easier to use, actually
> portable, etc.  The effort would surely be repaid.

I think you're right, in that the engineering would be challenging.  You
could conceivably factor getContents into two functions getBlocks :: IO
[Block] and a pure function to unpack the blocks into characters, which
would lend itself to deforestation, but that would conflict with our
attempts to re-use buffers when possible.  But the gains might outweigh
the slight performance loss from not re-using buffers as much - it's an
interesting idea, anyway.

Cheers,
        Simon


_______________________________________________
Glasgow-haskell-users mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users

Reply via email to