System.IO.latin1 docs
Wolfgang Jeltsch
g9ks157k at acme.softbase.org
Sat Dec 25 16:34:13 CET 2010
Am Donnerstag, den 23.12.2010, 10:09 +0000 schrieb Simon Marlow:
> On 16/12/10 20:53, Wolfgang Jeltsch wrote:
> > Hello,
> >
> > on
> >
> > <http://www.haskell.org/ghc/docs/6.12.2/html/libraries/base-4.2.0.1/System-IO.html#v%3Alatin1>
> >
> > it says:
> >
> >> An attempt to write a character greater than '\255' to a Handle using
> >> the latin1 encoding will result in an error.
> >
> > However, according to my experience (with GHC 6.12.1 and base 4.2.0.0),
> > latin1 just outputs a character '\cccc' as cccc `mod` 256.
>
> It seems to be working as advertised for me:
>
> $ ghc-6.12.1 --interactive
> GHCi, version 6.12.1: http://www.haskell.org/ghc/ :? for help
> Loading package ghc-prim ... linking ... done.
> Loading package integer-gmp ... linking ... done.
> Loading package base ... linking ... done.
> Loading package ffi-1.0 ... linking ... done.
> Prelude> import System.IO
> Prelude System.IO> hSetEncoding stdout latin1
> Prelude System.IO> putChar '\256'
> *** Exception: <stdout>: hPutChar: invalid argument
> (character is out of range for this encoding)
> Prelude System.IO>
>
> I get the same results with 7.0.1. Can you tell me how to reproduce the
> problem you're seeing?
I used
hSetBinaryMode stdout True
instead of
hSetEncoding stdout latin1 .
The documentation of hSetBinaryMode says:
This has the same effect as calling hSetEncoding with latin1,
together with hSetNewlineMode with noNewlineTranslation.
It seems that this sentence is wrong.
Best wishes,
Wolfgang
More information about the Libraries
mailing list