<div dir="ltr">Maybe it is unreasonable to look for maximal generality in use of each operator.<div><br></div><div>A common use of "+" is for the operation of an abelian semigroup or monoid (any semigroup can be converted into a monoid anyway).</div><div><br></div><div>Alexey.<br><br>P.S. I was tempted to suggest "++" for cancellative monoids and "**" for arbitrary monoids, but "++" on lists is not quite cancellative if one of the lists is infinite.<br><div><br></div><br>On Saturday, September 12, 2015 at 10:52:01 AM UTC+2, M Farkas-Dyck wrote:<blockquote class="gmail_quote" style="margin: 0;margin-left: 0.8ex;border-left: 1px #ccc solid;padding-left: 1ex;">On 11/09/2015, David Thomas <<a href="javascript:" target="_blank" gdf-obfuscated-mailto="E06lEzaxAAAJ" rel="nofollow" onmousedown="this.href='javascript:';return true;" onclick="this.href='javascript:';return true;">davidle...@gmail.com</a>> wrote:
<br>> a subtraction operation that returns a different type
<br>
<br>On 12/09/2015, Alexey Muranov <<a href="javascript:" target="_blank" gdf-obfuscated-mailto="E06lEzaxAAAJ" rel="nofollow" onmousedown="this.href='javascript:';return true;" onclick="this.href='javascript:';return true;">alexey....@gmail.com</a>> wrote:
<br>> My 2 cents: the difference of two points in an affine space is a vector,
<br>> the sum of a point of an affine space and a vector is another point.
<br>
<br>This would mean multi-parametre type classes or type families, so we'd
<br>need to canonicalize them first, which seems unlikely in near future
<br>at least.
<br></blockquote></div></div>