Removing ++ et al: ok, they have their problems.<p>But retaining x += 1?  That one has always annoyed me. Why does &#x27;+&#x27; (and friends) get this special form, but not my functions? Just because they&#x27;re built-in.<p>They are useful; no argument there. Largely because &#x27;x&#x27; can be a complex reference, and you don&#x27;t have to type it twice (and the compiler doesn&#x27;t have to figure out that its the same expression twice). E.g.  x=x+1 is short but 
    <i>(rec</i>)FnRec(iRec) = <i>(rec</i>)FnRec(iRec) + 1;
is not short. And the compiler gets some great hints when the &#x27;+=&#x27; form is used (don&#x27;t calculate the reference twice).<p>I just want that for my stuff too!  E.g. I may have a transformation method Xform(Foo&amp;, Bar) that returns another Foo&amp;.  I want to say
    foo = Xform(foo, bar);
but with &#x27;foo&#x27; replaced by a complex reference. I have to say
    FnFooRef(iFoo, &quot;primary&quot;, red) = Xform(FnFooRef(iFoo, &quot;primary&quot;, red), bar)<p>instead of 
   FnFooRef(iFoo, &quot;primary&quot;, red) Xform= bar;<p>I want my own &#x27;operators&#x27; with the &#x27;op=&#x27; syntax supported.<p>Probably its not terribly useful any more; languages support immutable data and tuples and so much that don&#x27;t work this way at all.