linter/checker for single-threaded state via numbered variables?
Led
ledest@REDACTED
Mon Jan 27 23:40:25 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.
>
>
foo(X0) ->
X = update(X0),
persist(case predicate(X) of
true -> another_update(X);
false -> X
end).
Start to hate me:)
> 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?
>
--
Led.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20200128/1d1b23f5/attachment.htm>
More information about the erlang-questions
mailing list