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