[MLton] Re: [Sml-basis-discuss] Unicode and WideChar support

John Reppy jhr@cs.uchicago.edu
Wed, 30 Nov 2005 08:32:23 -0600


Even if the modules are not top-level, they are still present.  I  
don't think that
this is the right way to factor things.

	- John

On Nov 30, 2005, at 8:24 AM, Matthew Fluet wrote:

>
>>>> I think that this proposal is too heavy weight for its usefulness.
>>> I agree that it's pretty heavy-weight.
>>> However, at least in MLton creating the structures isn't a big deal.
>>>> The Basis design assumes that there is an implementation of the  
>>>> TEXT
>>>> signature for each char/string/substring type, so you'll have  
>>>> all the
>>>> arrays, vectors, slices, etc. for each type.
>>> What if we just said that only Char and WiderChar had the  
>>> structures at
>>> the toplevel? All the others only provide Ucs2Text,  
>>> AsciiText, ... That has
>>> very little namespace pollution, yet provides everything desired.  
>>> From my
>>> experience with MLton's Char, most/all of these structures can be  
>>> cookie-
>>> cutter stamped out of a functor, so it's not much trouble to  
>>> implement.
>>
>> Having a character type without a corresponding string/substring  
>> type seems
>> weird.  Once you have string/substring, then you effectively have  
>> the vector
>> and slice structures too, so why not add arrays and array slices  
>> to get the
>> complete set?  My main concern is that you end up with a lot of  
>> modules that
>> most users won't use or understand.
>
> I think Wesley's proposal was not to forgoe having string/substring  
> structures for distinguished character sets, but rather to only  
> provide a TEXT module for them.  That is, an implementation would  
> provide (I'm eliding the 'with type' constraings):
>
> structure Char : CHAR
> structure String : STRING
> structure Substring : SUBSTRING
> structure CharVector : MONO_VECTOR
> structure CharArray : MONO_ARRAY
> structure CharVectorSlice : MONO_VECTOR_SLICE
> structure CharArraySlice : MONO_ARRAY_SLICE
> structure Text : TEXT
>
> structure WideChar : CHAR
> structure WideString : STRING
> structure WideSubstring : SUBSTRING
> structure WideCharVector : MONO_VECTOR
> structure WideCCharArray : MONO_ARRAY
> structure WideCharVectorSlice : MONO_VECTOR_SLICE
> structure WideCharArraySlice : MONO_ARRAY_SLICE
> structure WideText : TEXT
>
> structure AsciiText : TEXT
> structure Ucs2Text : TEXT
>