On Wed, 11 Nov 2009 04:27:45 +0300, Andrei Alexandrescu <seewebsiteforem...@erdani.org> wrote:

Bill Baxter wrote:
2009/11/10 Andrei Alexandrescu <seewebsiteforem...@erdani.org>:
Denis Koroskin wrote:
On Wed, 11 Nov 2009 02:49:54 +0300, Andrei Alexandrescu
<seewebsiteforem...@erdani.org> wrote:

Don wrote:
Lutger wrote:
Don wrote:
...
There is a definite use for such as thing. But the existing toString() is much, much worse than useless. People think you can do something
with
it, but you can't.
eg, people have asked for BigInt to support toString(). That is an
over-my-dead-body.
Since you are in the know and probably the biggest toString() hater
around: are there plans (or rejections thereof) to change toString() before
D2 turns gold? Seems to me it could break quite some code.
 I'm hoping someone will come up with a design.
 Straw man:
 void toString(void delegate(const(char)[]) sink, string fmt) {
 // fmt holds the format string from writefln/formatln.
// call sink() to print partial results.
 }
I think the best option for toString is to take an output range and write
to it. (The sink is a simplified range.)

Andrei
It means toString() must be either a template, or accept an abstract
InputRange interface?
It should take an interface.
 So yet another type in object.d?
Or require users in import something specific in every module that's
going to use toString?
 --bb

I am not sure. Opinions as always are welcome.

Andrei

Some ranges may be polymorphic, so having base interface hierarchy in Phobos would be useful anyway.

BTW, save() is already implemented and used throughout the Phobos under a different name - opSlice (i.e. auto copy = range[]). It's a bikeshed discussion, but why save() and not opSlice(), or even clone()?

Reply via email to