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