<div dir="ltr"><div dir="ltr"></div><div class="gmail_quote"><div dir="ltr" class="gmail_attr"><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">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:<div><br></div><div>foo(X0) -></div><div>  X1 = update(X0),</div><div>  case predicate(X1) of</div><div>    true -></div><div>      X2 = another_update(X1),</div><div>      persist(X2);</div><div>    false -></div><div>     persist(X1)</div><div>  end.</div><div><br></div></div></blockquote><div></div><div><br></div><div>foo(X0) -><br>    X = update(X0),<br>    persist(case predicate(X) of<br>                true -> another_update(X);<br>                false -> X<br>            end).</div><div><br></div><div>Start to hate me:)<br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div></div><div>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.</div><div><br></div><div>Is there any Erlang linter or style checker that can perform these types of checks?</div></div>
</blockquote></div><br clear="all"><br>-- <br><div dir="ltr" class="gmail_signature">Led.</div></div>