<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><a href="http://en.wikipedia.org/wiki/List_of_mathematical_symbols#Symbols">http://en.wikipedia.org/wiki/List_of_mathematical_symbols#Symbols</a></div><div><br></div><div>The + symbol means addition and union of disjoint sets. A path (including a fs path) is a set of links (for a fs path, a link is a folder name). Using the + symbols has a natural interpretation as concatenation of subpaths (sets) to for form a longer path (superset).</div><div><br></div><div>The / symbol means the quotient of a group. It always returns a subgroup. When I see path1 / path2 I would expect it to return all paths that start by path2 or contain path2, not concatenation.</div><div><br></div><div>The fact that string paths in Unix use the / to represent concatenation is accidental. That's just how the path is serialized into a string. In fact Windows uses a different separator. I do think a serialized representation of an object makes a good example for its abstract representation.</div><div><br></div><div>Massimo</div><br><div><div>On Oct 8, 2012, at 11:06 AM, Andrew McNabb wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div>On Tue, Oct 09, 2012 at 12:03:55AM +1100, Steven D'Aprano wrote:<br><blockquote type="cite">/ is a symbol that means whatever the class<br></blockquote><blockquote type="cite">gives it. It isn't like __init__ or __call__ that have defined<br></blockquote><blockquote type="cite">language semantics, and there is no rule that says that / means<br></blockquote><blockquote type="cite">division. I'll grant you that it's a strong convention, but it is<br></blockquote><blockquote type="cite">just a convention.<br></blockquote><br>I'll grant you that the semantics of the __truediv__ method are defined<br>by convention.<br><br><blockquote type="cite">But it's just a name. __add__ doesn't necessarily perform addition,<br></blockquote><blockquote type="cite">__sub__ doesn't necessarily perform subtraction, and __or__ doesn't<br></blockquote><blockquote type="cite">necessarily have anything to do with either bitwise or boolean OR.<br></blockquote><blockquote type="cite">Why should we insist that __*div__ (true, floor or just plain div)<br></blockquote><blockquote type="cite">must only be used for numeric division when we don't privilege other<br></blockquote><blockquote type="cite">numeric operators like that?<br></blockquote><br>__add__ for strings doesn't mean numerical addition, but people find it<br>perfectly natural to speak of "adding two strings," for example.  Seeing<br>`string1.__add__(string2)` is readable, as is `operator.add(string1,<br>string2)`.  Every other example of operator overloading that I find<br>tasteful is analogous enough to the numerical operators to retain use<br>the name.<br><br>Since this really is a matter of personal taste, I'll end my<br>participation in this discussion by voicing support for Nick Coghlan's<br>suggestion of a `join` method, whether it's named `join` or `append` or<br>something else.<br><br>--<br>Andrew McNabb<br><a href="http://www.mcnabbs.org/andrew/">http://www.mcnabbs.org/andrew/</a><br>PGP Fingerprint: 8A17 B57C 6879 1863 DE55  8012 AB4D 6098 8826 6868<br>_______________________________________________<br>Python-ideas mailing list<br>Python-ideas@python.org<br>http://mail.python.org/mailman/listinfo/python-ideas<br></div></blockquote></div><br></body></html>