On 18/10/2009 20:15, Chryssochoidis Christos wrote:
Thanks Don for your reply.
I may have overlooked something in the blog post you gave, but my
understanding is that it talks about the user's input/output to and from
GHCi and the file system. The user IO with non-Latin chars seems to work
fine in GHC 6.12.1; e.g.:
*Main> putStrLn "πρόχειρον.hs"
πρόχειρον.hs
*Main> getLine >>= putStrLn
πρόχειρον.hs
πρόχειρον.hs
*Main>
It's only when GHCi attempts to print a diagnostic message containing a
filename with non-Latin chars that the garbling occurs:
*Main> :load πρόχειρον.hs
[1 of 1] Compiling Main ( ÏÏοÌÏειÏον.hs, interpreted )
ÏÏοÌÏειÏον.hs:1:23:
Not in scope: type constructor or class `Boo'
Failed, modules loaded: none.
Prelude>
It would be nice if the error messages at least showed correctly the
filename.
Maybe this has something to do with Haskeline?
It's not to do with Haskeline. The real underlying problem is that our
filesystem APIs on Unix interpret FilePath as [Word8] without doing any
encoding/decoding; they just strip off all but the low 8 bits of each
Char. This is a long-standing problem, and won't be solved properly
until we switch to an abstract FilePath type, but that's a big change
that will break lots of code.
Lots more good discussion here:
http://hackage.haskell.org/trac/ghc/ticket/3456
If there were a filePathToString function we could use it in GHC to fix
the above glitch.
Cheers,
Simon
_______________________________________________
Glasgow-haskell-users mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users