Can someone clarify for me the status and/or direction of string formatting in 
D? 

We've got:

1. toString, the object method with no parameters.
2. toString(sink, format)
3. to!String()
4. format
5. writef/writefln
6. write/writeln

I realize these exist for various reasons, some (1,3) are simple (unformatted) 
conversions, others (2,4-6) are designed to provide configurable formatting. 
The problem is that they are inconsistent with each other.

Using std.bigint as an example: 1, 3, 4 and 6 don't work, or don't work as 
expected (to me at least). 1. prints 'BigInt', 3 and 4 are compile errors.

I know bigint is a controversial example because Don has strong feelings 
against 1 and favors 2. (See bug #5231). I don't really have an opinion one way 
or the other but I need to know what to implement in my arbitrary-precision 
floating point module. This obviously relies heavily on bigint.

So, is there a transition underway in the language (or just Phobos) from 
toString, writeln and format, to toString(sink,format) and writefln?

Or is this just a divergence of views, both of which are acceptable and we'll 
have to get used to choosing one or the other?

Or am I just mistaken in believing there is any significant conflict?

I apologize if this has already been hashed out in the past and, if so, I would 
appreciate someone pointing me to that discussion. (Or just the results of the 
discussion.)

Paul

Reply via email to