Two standard libraries?

Sean Kelly sean at f4.ca
Sat Jul 14 08:09:08 PDT 2007


Steve Teale wrote:
> Sean Kelly Wrote:
> 
>> Steve Teale wrote:
>>> It seemes to me that given Walter's definition of the language - a system programming language - that Phobos is closer to the mark.  If users want a more object oriented standard library, that's all well and good, but it should be a shoe-in, then if you want to use the OO stuff you can, but code that's been written to work with Phobos should work unmodified with other libraries.  (Note the recent discussion on C++ security).
>> While one might argue that it is easier to wrap a strictly procedural 
>> library with an OO layer than vice-versa, I think the ease with which 
>> any library may be encapsulated in a wrapper is more dependent on its 
>> design (the assumptions it makes, how features are exposed, etc) than on 
>> whether the interface uses functions or objects.  That said, I don't 
>> personally consider Tango to be an object-oriented library because it 
>> does not require the user to define his own objects in order to use it.
>>
>>
>> Sean
> 
> Sean, I take your point, and maybe should not have used the term "OO", but my idea of progress is:
> 
> printf("X is: %s\n", toStringz(x))
> cout << "X is: " << x << endl;
> Stdout("X is: ")(x).newline;
> writefln("X is: %s", x);
> 
> rather than:
> 
> printf("X is: %s\n", toStringz(&x))
> cout << "X is: " << x << endl;
> writefln("X is: %s", x);
> Stdout("X is: ")(x).newline;
> 

For what it's worth, Stdout supports a number of different output 
methods.  The "whisper syntax" you show above is just the most commonly 
known.  For formatted output similar to writefln you'd do:

Stdout.format( "X is: {}", x ).newline;

Another option is:

Stdout( "X is: ", x ).newline;

This last prints comma-delimeted output, since that's how it appears in 
the Stdout call.  For what it's worth, Kris recently explained all this 
on D.learn.


Sean



More information about the Digitalmars-d mailing list