Gordon James Miller wrote: > 1 - Is there yet a standard, or at least commonly supported by hugs and > ghc, method for dealing with binary data. > > 2 - If not, is there a "standard" library that is used to manipulate > binary data. I've seen some references to some implementations but > given that this is being done in my limited spare time (I'm not a full > time student) I'd rather not spin my wheels on something that's going > to be dead in a matter of months.
There isn't a standard mechanism for binary I/O. However, a simple and fairly generic mechanism for doing this is: 1. Read in a list of "Char"s with the standard I/O functions. 2. Use "map (fromIntegral . ord) ..." to get a list of "Word8"s (octets). 3. Use with, poke, peek, castPtr etc to coerce a list of octets to the desired type(s). For output, do the reverse. This way, you can read/write any instance of Storable in the host's native format (i.e. "C" format), and the code should be portable. The key here is step 3; if you want to sacrifice portability for performance, use Posix.read (or the Win32 equivalent) to read directly into memory (Ptr/Addr), or even write an import declaration for mmap(). -- Glynn Clements <[EMAIL PROTECTED]> _______________________________________________ Haskell mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/haskell
