If I can, I want to back up the conversation a bit. Instead of starting with a solution, what's the problem? I believe the issue that this is trying to solve is that some functions that operate on an object return a new object, and we would like to use them to modify an object. Setting aside the fact that a new object is not the same as a modified object and other references to that object won't change, what this means is that we want to have a shorthand way to write: (some reference to an object) = (an expression that operates on <some reference to an object)) Note that the := operator solves a similar problem: (an expression that references (some subexpression) multiple times) where we can rewrite blah blah (some subexpression) blah blah (some subexpression) blah (some subexpression) blah as blah blah (X := (some subexpression)) blah blah X blah X blah That won't help us here because the two <some references to an object> are respectively an lvalue and an rvalue. Given that, I'll throw out a straw proposal. Since an lvalue can be converted to an rvalue but not vice versa, suppose we rewrite this as: (some reference) := X = <some expression using X> example: thing =: T = T.replace(before, after) But looking at that, it really isn't much better unless the left hand side is a very complicated expression. If we really needed a feature like this it would be better to use a special symbol like: thing = <>.replace(before,after) Even then, how frequent is this pattern that it would be worth doing? I think the answer to that question is going to be necessary to convince anyone that the problem is worth solving. --- Bruce