clarification on single assignment

Erik (Happi) Johansson <>
Thu Nov 23 09:43:36 CET 2000


> Forgetting about matching vs. assignment, wouldn't just defining "x =
> <expr1>;" as having the same semantics as "let x = <expr1> in ..." be
> enough?  In effect, each assignment starts a new variable scope.
> When does
> this fall down?

When you introduce the same var in different branches of a case or if:

case Foo of
  1 -> X = a;
  2 -> X = b;
  _ -> X = c
end,
 bar(X)


This kind of use is discourage by the compiler but allowed and can be
rewritten as:
X = case Foo of
      1 -> a;
      2 -> b;
      _ -> c
end,
 bar(X)

But it gets hairier (but not impossible) when you introduce several
variables in a case...

/Erik




More information about the erlang-questions mailing list