linter/checker for single-threaded state via numbered variables?

Mikael Pettersson mikpelinux@REDACTED
Mon Jan 27 14:22:00 CET 2020


Since Erlang doesn't allow you to rebind a variable in a scope where it's
already bound (that becomes a match instead), there is a convention of
using numbered variables to denote successive "generations" of some object
or state that's intended to be used in a single-threaded or linear way.
For example:

foo(X0) ->
  X1 = update(X0),
  case predicate(X1) of
    true ->
      X2 = another_update(X1),
      persist(X2);
    false ->
     persist(X1)
  end.

Here, whenever X(N+1) becomes bound, X(N) should become unused, and it
should be an error if X(N) did not become unused.  A variation is that the
"final" value is the one without a number suffix.

Is there any Erlang linter or style checker that can perform these types of
checks?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20200127/d10a7f7b/attachment.htm>


More information about the erlang-questions mailing list