DIP9 -- Redo toString API

spir denis.spir at gmail.com
Mon Nov 22 11:48:28 PST 2010


On Mon, 22 Nov 2010 11:02:48 -0500
"Steven Schveighoffer" <schveiguy at yahoo.com> wrote:

> On Sun, 21 Nov 2010 05:10:13 -0500, spir <denis.spir at gmail.com> wrote:
> 
> > On Thu, 18 Nov 2010 17:21:20 -0500
> > "Steven Schveighoffer" <schveiguy at yahoo.com> wrote:
> >
> >>
> >> I just created a new D Improvement Proposal to fix the toString problem  
> >> I
> >> brought up several posts ago.
> >>
> >> See: http://prowiki.org/wiki4d/wiki.cgi?LanguageDevel/DIPs/DIP9
> >
> >
> > Hello,
> >
> >
> > [Sorry for a partly personal message, but I cannot help it. At first  
> > sight, my gut reaction in front of this proposal has been: no, nooo,  
> > NOOO!!! I waited a few days because, _surely_, I was missing or  
> > misinterpreting some basic point. But after several days and reads of  
> > the DIP, I still feel the same and nobody seems to address the issue; so  
> > here I go. Excuse the noise if I'm simply wrong. I feel ashamed to send  
> > that -- but let's be bold :-).]
> >
> 
> Thanks for the input, but you are missing several very important points:
> 
> 1. toString will not be made 'illegal', you can still write toString  
> methods and use them as you wish (writing a toString method without also  
> writing a writeTo method will be deprecated for a time, but after that the  
> compiler will not complain).  But writeln, format, to!string, etc. will  
> not use them.
> 2. toString can unequivocally be replaced anywhere you see it with  
> to!string.  There is zero loss of functionality, and the change is not  
> unpleasant.  Not only that, but almost *no* code uses toString, it is more  
> correct to use to!string, and let to!string make the right decision.  The  
> reason is because to!string handles builtin types (which have no toString  
> member), and custom structs without a toString member.  You should never  
> have to write a delegate to pass to writeTo directly unless you have some  
> funky way of outputting the data, but in that case, writeTo is better for  
> you anyways.
> 3. Yes, toString could support an optional formatting argument, but that  
> is not my main concern (it is Don's and others, I'm assuming you too).  My  
> main concern is that in order to hook into writeln, format, to!string,  
> etc, your type *must* define a function that necessarily allocates  
> memory.  writeTo not only solves that problem, but in most cases does not  
> change the difficulty of converting objects/structs to text format (and in  
> many cases, it simplifies the code which creates the string).
> 
> -Steve

Right, thank you for the answer. Let us stop this discusson (I will) and wait for real trial when an implementation is available.

Denis
-- -- -- -- -- -- --
vit esse estrany ☣

spir.wikidot.com



More information about the Digitalmars-d mailing list