I was recently thinking about the nature of `=` of not being an operator. The reason given is that it sets the binding of the variable, rather than the value. It seems like it would be nice to have an operator that dealt with values rather than bindings. The reason being: (a) if it's an operator you can overload its behavior, which when dealing with values could be very useful, and (b) it provides a more natural syntax than `copy`.
While I don't have strong feels about any particular syntax, I could imagine something like: x := y # copied x = y # bound function :=(var, value) #... end One side benefit of doing is this it can help solve other issues. For example, you could make a `ref` class for cases where you want to pass a variable bound to a scalar to be altered within a function: type ref{T} var::T end function :={T}(var::ref{T}, value::T) ref.var := value end