It\'s often mooted (indeed I think even the standard alludes to it), that a @= b and a = a @ b are equivalent. Here I\'m using @ to stand
a @= b
a = a @ b
@
You can define ^= and ^ to do completely different things. So, no compiler can't change one to the another just if it wants
^=
^