portable encoding/decoding without going via a handle

Ganesh Sittampalam ganesh at earth.li
Tue Dec 11 01:56:10 CET 2012


On 28/11/2012 08:41, Judah Jacobson wrote:
> 
> How about something like this?
> 
> createFromHandle :: (Handle -> IO ()) -> IO ByteString

Of course, thanks!

I've knocked something up at http://hub.darcs.net/ganesh/bytestring-handle

The signatures are:

readHandle :: Bool -> BL.ByteString -> IO Handle
writeHandle :: Bool -> (Handle -> IO a) -> IO (BL.ByteString, a)

I went for lazy bytestrings as they fit my use case and mostly
generalise strict ones in this context - one exception is that writing
directly to a strict one could avoid a copy if you know the max size up
front.

Comments etc welcome. I've written some tests but not very comprehensive
ones and I wouldn't be at all surprised if the seek behaviour is
completely broken.

Cheers,

Ganesh



More information about the Libraries mailing list