<div dir="ltr"><div>on Fri, 1 Sep 2017 00:40:25 +0200 André Videla &lt;<a href="mailto:andre.videla@gmail.com">andre.videla@gmail.com</a>&gt; wrote:<br></div><div><br></div><div>&gt; Furthermore, I would argue that using `+` for matrices is more consistent than the current definition of `+`.<br></div><div>&gt; Indeed, the operator `+` is both used for combining numbers and combining arrays/strings. </div><div>&gt; The inconsistency comes from the fact that it is expected that `+` is a commutative operator, </div><div>&gt; but concatenation is not a commutative operation. Therefore the semantics of `+` varies </div><div>&gt; depending on the types that it’s used on. And, in my opinion, this inconsistency is to be </div><div>&gt; avoided when dealing with operators. Not to mention that nothing prevent a library to override </div><div>&gt; `+` with any nonsensical behaviour.</div><div><br></div><div class="gmail_extra">how would you multiply matrices, or multiply matrix by a number? let&#39;s say you will use * for that. but matrix x matrix multiplication is not commutative (while matrix x number is). would you propose to use ** instead?</div><div class="gmail_extra"><br></div><div class="gmail_extra">if i have:</div><div class="gmail_extra"><br></div><div class="gmail_extra">func * (m: Matrix, n: Double) -&gt; Matrix </div><div class="gmail_extra"><br></div><div class="gmail_extra">with * somehow marked &quot;commutative&quot;, shall i be able using it as n*M straight away without having explicit:</div><div class="gmail_extra"><br></div><div class="gmail_extra">func * (n: Double, m: Matrix) -&gt; Matrix</div><div class="gmail_extra"><br></div><div class="gmail_extra">while using + for string concatenation is a long standing tradition it is indeed a bit awkward (as awkward as 1 + 2 = 12 would be)</div><div class="gmail_extra"><br></div><div class="gmail_extra">Mike</div></div>