Semantics of toString

Justin Johansson no at spam.com
Tue Nov 10 03:53:32 PST 2009


Don Wrote:

> Lutger wrote:
> > Justin Johansson wrote:
> > 
> >> Lutger Wrote:
> >>
> >>> Justin Johansson wrote:
> >>>
> >>>> I assert that the semantics of "toString" or similarly named/purposed
> >>>> methods/functions in many PL's (including and not limited to D) is
> >>>> ill-defined.
> >>>>
> >>>> To put this statement into perspective, I would be most appreciative of
> >>>> D NG readers responding with their own idea(s) of what the semantics of
> >>>> "toString" are (or should be) in a language agnostic ideology.
> >>>>
> >>> My other reply didn't take the language agnostic into account, sorry.
> >>>
> >>> Semantics of toString would depend on the object, I would think there are
> >>> three general types of objects:
> >>>
> >>> 1. objects with only one sensible or one clear default string
> >>> representations, like integers. Maybe even none of these exist (except
> >>> strings themselves?)
> >>>
> >>> 2. objects that, given some formatting options or locale have a clear
> >>> string representation. floating points, dates, curreny and the like.
> >>>
> >>> 3. objects that have no sensible default representation.
> >>>
> >>> toString() would not make sense for 3) type objects and only for 2) type
> >>> objects as part of a formatting / localization package.
> >>>
> >>> toString() as a debugging aid sometimes doubles as a formatter for 1) and
> >>> 2) class objects, but that may be more confusing than it's worth.
> >>>
> >> Thanks for that Lutger.
> >>
> >> Do you think it would make better sense if programming languages/their
> >> libraries separated functions/methods which are currently loosely purposed
> >> as "toString" into methods which are more specific to the types you
> >> suggest (leaving only the types/classifications and number thereof to
> >> argue about)?
> >>
> >> In my own D project, I've introduced a toDebugString method and left
> >> toString alone. There are times when I like D's default toString printing
> >> out the name of the object
> >> class.  For debug purposes there are times also when I like to see a
> >> string printed
> >> out in quotes so you can tell the difference between "123" and 123.  Then
> >> again, and since I'm working on a scripting language, sometimes I like to
> >> see debug output distinguish between different numeric types.
> >>
> >> Anyway going by the replies on this topic, looks like most people view
> >> toString as being good for debug purposes and that about it.
> >>
> >> Cheers
> >> Justin
> >>
> > 
> > Your design makes better sense (to me at least) because it is based on why 
> > you want a string from some object. 
> > 
> > Take .NET for example: it does provide very elaborate and nice formatting 
> > options based and toString() with parameters. For some types however, the 
> > default toString() gives you the name of the type itself which is in no way 
> > related to formatting an object. You learn to work with it, but I find it a 
> > bit muddled. 
> > 
> > As a last note, I think people view toString as a debug thing mostly because 
> > it is very underpowered.
> 
> 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.

s/over-my-dead-body/over-your-dead-body/ :-)

At least those are the words that Brendan Eich uses when people
seek to make JavaScript multi-threaded.

http://weblogs.mozillazine.org/roadmap/archives/2007/02/threads_suck.html

http://www.teknico.net/misc/fortune/concurrency.en.txt

Google:

http://www.google.com.au/#hl=en&q=Brendan+Eich+"your+dead+body"

Best regards and thanks to all respondents on "toString" topic,

Justin




More information about the Digitalmars-d mailing list