[MLton] WideChar.{chr,ord}

Matthew Fluet fluet@cs.cornell.edu
Sat, 26 Nov 2005 10:47:23 -0500 (EST)

> WideChar.{chr,ord} convert back and forth between an 'int' and 'char'. 
> Great. Char4 won't fit! I wish I'd realized this earlier...

It fits if  int == IntInf.int.  This is a general problem with the Basis 
Library not specifying the 'default' int size.

> Char{1,2,4} sound like they're out.
> Maybe Char{8,16,21} would be better.

I never understood the motivation for the Char{1,2,4} naming scheme, when 
Int<N> and Word<N> measured the bit-size.

> However, the standard forbids this: The optional WideChar structure 
> defines wide characters, which are represented by a fixed number of 
> 8-bit words (bytes)

I think this is a place where we can reasonably break from the standard, 
since it was not designed with WideChar in mind.

> However, if Char is really ISO-8559-1, then the
> definition of is{Alpha,...} is wrong for Char!!!

How so?  There are ISO-8559-1 characters that are neither upper nor lower?

> WideChar sounded so straight-forward when I started
> this, but it's really causing me a headache. I don't think
> it is possible to have an implementation that conforms
> to both the basis and unicode rules.

Again, I think we follow Unicode rules over the Basis standard.

> I think I'm going to start begging people to make a few
> modifications on sml-basis-discuss...

That's a good place to open up discussion.