[erlang-questions] Reassigning variables

Matthew Dempsky <>
Tue Mar 17 19:02:20 CET 2009


I like pattern matching in the majority of cases, but I find I write
enough code where I need to incrementally update a data structure, and
maintaining that code is a pain when I have code like:

  X = foo(),
  X1 = bar(X),
  X2 = xyzzy(X1),
  blah(X2).

and later want to change it to:

  X = foo(),
  X1 = whee(X),
  X2 = bar(X1),
  X3 = xyzzy(X2),
  blah(X3).

This means having to change four lines of code, when really it's
conceptually just one change.  I'd like to suggest being able to do
something like:

  X = foo(),
  r(X) = whee(X),
  r(X) = bar(X),
  r(X) = xyzzy(X),
  blah(X).

where "r(?VAR) = ?EXPR" means to reassign ?VAR to ?EXPR, even if it
previously has an assigned value.

Thoughts?  Does anyone have suggestions for better syntax?  I think
this can be handled with a parse transform, and I'm considering
writing a parse transform to handle it.  (I haven't checked if anyone
else has proposed similar functionality in the past, but this is
something that's been bugging me for a while, and I've finally had to
rename variables manually enough times to propose this.)



More information about the erlang-questions mailing list