Binary IO

Simon Marlow simonmar at
Thu Apr 21 05:32:59 EDT 2005

On 20 April 2005 22:35, Scott Turner wrote:

> On 2005 April 20 Wednesday 15:56, Iavor Diatchki wrote:
>> I've been playing around with decoding binary files, and I couldn't
>> find a function in the libraries to read a byte from a file. Does
>> anyone know if there is such a function?  ....... it seems
>> that we should have:
>> hGetByte :: Handle -> IO Word8
> hGetByte could be implemented on top of hGetBuf and StorableArray,
> but the overhead would be ugly.  Recently I needed binary input for
> similar reasons, and would have used hGetByte had it been available. 
> I ended up performing input using a reasonable-sized buffer.

In GHC, you can assume that 

  hGetByte h = do c <- hGetChar h; return (fromIntegral (ord c))

you must open the file in binary mode (openBinaryFile).  I don't think
this works with Hugs, though.

Personally, I think this ought to be part of the redesign of the I/O
library.  hGetByte and hPutByte would be a stopgap.  But, not much
progress is being made on an I/O redesign right now.


More information about the Libraries mailing list