[Haskell-cafe] Re: Writing binary files?
Glynn Clements
glynn.clements at virgin.net
Thu Sep 16 06:24:51 EDT 2004
MR K P SCHUPKE wrote:
> >E.g. what happens if you call getDirectoryContents for a directory
> >which contains filenames which aren't valid in the current encoding?
>
> Surely this shows the problem with the idea of a 'current encoding'
Yes.
In case I haven't already made this clear, my argument is essentially
that it's the API which is broken, rather than the implementations.
> ... You could be reading files from two remote servers each using
> different encodings...
>
> So you could have read and write raw [Word8] and read and write char,
> somehting like:
>
> readWithEncoder :: ([Word8] -> [Char]) -> IO [Char]
> writeWithEncoder :: ([Char] -> [Word8]) -> [Char] -> IO ()
In the general case, it needs to be a bit more complex than that, in
order to handle stateful encodings (e.g. ISO-2022), or to handle
decoding multi-byte encodings (e.g. UTF-8) in chunks. Unfortunately,
the iconv interface doesn't allow the encoder state to be extracted,
so a generic iconv-based converter would have to be in the IO monad.
--
Glynn Clements <glynn.clements at virgin.net>
More information about the Haskell-Cafe
mailing list