On 1/22/08, Duncan Coutts <duncan.coutts@worc.ox.ac.uk> wrote:

On Tue, 2008-01-22 at 09:29 +0000, Magnus Therning wrote:
> I vaguely remember that in GHC 6.6 code like this
>
>   length $ map ord "a string"
>
> being able able to generate a different answer than
>
>   length "a string"

That seems unlikely.

Unlikely yes, yet I get the following in GHCi (ghc 6.6.1, the version currently in Debian Sid):

> map ord "a"
[97]
> map ord "ö"
[195,182]

Funky, isn't it? ;-)

Easy!

Prelude> 'å' == '\229'
True
Prelude> 'å' == Char.chr 229
True

Remember, when you type:
Prelude> 'å'

what you really get is:
Prelude> putStrLn (show 'å')

So perhaps what is confusing you is the Show instance for Char which
converts Char -> String into a portable ascii representation.

Have you tried putting any of this into GHCi (6.6.1)?  Any line with 'å' results in the following for me:

> 'å'
<interactive>:1:2: lexical error in string/character literal at character '\165'
> "å"
"\195\165"

Somewhat disappointing.  GHCi 6.8.2 does perform better though.

/M