[erlang-questions] some language changes

Robert Virding <>
Mon Jun 4 23:28:02 CEST 2007


Corrado Santoro wrote:
> my two cents....
> 
>> The only clean way to do that would be to introduce proper variable 
>> scoping, but that is a big change, both syntax and semantics.
> ...uhmmmm.... but how can you do "A = A + 1" using variable scoping?? 
> Maybe introducing a syntax which is more and more hard than "A1 = A + 1"?
> 
> IMHO, I don't think that it could be the case...

If you added the scoping of variables so that variables occurring in 
patterns are always new variables, removed exporting variables and only 
returned values, and added a let construct:

let {A,B,C} = foo(A, B, C) ->
     ...
end

where A,B,C occurring in the body of the let refer to A,B,C in the pattern,

then you could reuse variable names. But there would be no gain as such 
in the manner of the original suggestion:

let A = A + 1 ->
     ...
end

Actually this change is perfectly feasible to do as it does not affect 
any fundamental semantics of Erlang. In fact the compiler internally 
does just this.

Robert

P.S. I don't suggest let ... in ... end as 'in' is used in may places 
and making it a reserved word would be impossible now.



More information about the erlang-questions mailing list