[Haskell-cafe] two problems with Data.Binary and Data.ByteString

Don Stewart dons at galois.com
Thu Aug 14 13:21:33 EDT 2008


duncan.coutts:
> On Wed, 2008-08-13 at 12:02 -1000, Tim Newsham wrote:
> 
> > However, I think probably the real blame here should probably go
> > to Data.Binary which doesn't attempt to check that it has consumed
> > all of its input after doing a "decode".  If "decode" completes
> > and there is unconsumed data, it should probably raise an error
> > (it already raises errors for premature EOF).  There's no reason
> > for it not to, since it does not provide the unconsumed data to
> > the caller when its done, anyway...
> > 
> > Thoughts?
> 
> I think you're right. The Binary instances cannot and must not read more
> than they need to, so that gives us the behaviour that we read exactly
> the length of the file, but no more, and thus we never hit EOF, so we
> don't close the file. So yes, decode should force the tail so that it
> can indeed hit EOF.

Duncan, 

You're suggesting that decode and decodeFile should whnf the next cell?

-- Don


More information about the Haskell-Cafe mailing list