Ben Tilly wrote:
> 
> craig duncan <duncan / nycap.rr.com> wrote:
> >
> >Yukihiro Matsumoto wrote:
> > >
> > > 'to_s' is a mean to convert something into a string (if you really
> > > want to), OTOH 'to_str' is a mean for something that wants to pretend
> > > to be a string. to_a and to_ary are in similar relationship.
> >
> >The problem with this explanation is that i have no idea what it means for
> >something to "pretend to be a string" as opposed to being one.
> 
> Think of it this way.  foo.to_s tells foo to describe itself
> as a string.  foo.to_str checks with foo that it is OK to
> think of foo as being its description, and gets that
> description.
> 
> So to_str is the same as to_s except with an extra assertion
> about the correct usage of that object.

Wow!  That was a little too subtle for me to guess.  I think because of the
minimalism that i (initially) perceive to be lacking in this design.  to_str
can always fill in for to_s, yes?  So what do you need to_s for?  I guess you
could say that you use to_s when you _don't_ want the object to be used as a
string . . . even though you want it to _appear_ that way.  ?  Oh, well, i
guess i can accept that there _might_ be some usage for that distinction
(can't think what, though).  Thanks, Ben.

craig