[erlang-questions] Erlang 3000?
Richard O'Keefe
ok@REDACTED
Thu Nov 20 02:51:46 CET 2008
On 20 Nov 2008, at 12:03 am, Johnny Billquist wrote:
>> "straße" - German for "street" - can be encoded in ISO Latin 1, but
>> both
>> your code and the one in the standard string module will fail to
>> convert
>> it to upper-case properly.
>
> Well, Latin-1 don't have an uppercase version of ß, so that letter
> can't
> be converted, if you want to stay in Latin-1. The rest will do just
> fine.
You are assume that case mapping always converts exactly one character
into exactly one character.
Even in Latin-1, thanks to $ß, that isn't true:
the upper case equivalent of that character is two characters,
both of which are Latin-1.
Back in the 1980s, when I was working on Quintus Prolog,
this assumption had already broken down. I see the comment
"This predicate does _not_ work well with languages like German"
on a case conversion predicate in a file dated 1987 and a
similar comment in a file dated 1988, and I'm pretty sure my
awareness of the issue is related to studying the XNS 16-bit
character set in about 1985. (The files in question do not
have histories, so they may well be older.)
If we want to get Erlang Unicode-ready, we'll have to purge
our code of character-at-a-time case mapping and replace it
by whole-string case mapping, but the problem already existed
20 years ago.
More information about the erlang-questions
mailing list