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

Reply via email to