On Tue, 15 Oct 2013 19:57:50 +1100, Chris Angelico wrote: > On Tue, Oct 15, 2013 at 6:48 PM, Antoon Pardon > <antoon.par...@rece.vub.ac.be> wrote:
>> That doesn't matter. Adding and concating are different operations and >> their are types in which both occur rather naturally. So as a designer >> of such a class you have to choose for which operation you use the >> natural python operator and for which operation you have to do it >> differently. NumPy is just an example that you can't escape this sort >> of incompatibilities in python. > > So what should "abc" + "def" result in, if addition is different from > concatenation? TypeError, like any other unsupported operator. > No, adding strings should concatenate them. And other > arithmetic operators make sense, too; For some definition of "sense". > Python doesn't happen to implement str-str or str/str, but some > languages do: Which languages are you talking about? For the record, if PHP is one of them, I consider that a good sign that it shouldn't be done :-) >> "abc"+"def"-"abc"; > (1) Result: "def" Eww. What would "xyz" - "abc" give? How about "cba" - "abc"? And "abcdabc" - "abc"? Justify your answers. >> "abc"-"b"; > (2) Result: "ac" >> "foo bar asdf qwer"/" "*"##"; > (3) Result: "foo##bar##asdf##qwer" And what, pray tell, would "foo bar" / " " be on its own? How about "foo bar" * "*"? Seems to me that using s/t*u as a way to perform substring replacement is too clever by half. > PHP has separate addition and concatenation operators, and it doesn't > help anything That's because PHP is beyond help. > (granted, the biggest problem is that every other language > we work with uses + to concat strings, so it's an easy source of bugs); > having multiple operators for "add the elements of these arrays" and > "add these arrays together" is really orthogonal to the general issue of > adding and concatenating needing different operators. Yes -- string concatenation and array operations are not really related, although string concatenation is a special case of array concatenation. But it is a wild over-generalisation to assume that because strings are arrays, and (numeric) arrays might want separate element-wise multiplication and whole-array multiplication operators, therefore strings need to support the same too. Personally, I think string and array concatenation ought to be & rather than +. That would free up + for element-wise addition for arrays, while still allowing & for concatenation. Of course, the cost would be the loss of an element-wise bit-and operator. You win some, you lose some. -- Steven -- https://mail.python.org/mailman/listinfo/python-list