Hello all,<div><br></div><div>I'll put in my $0.02 on this because I've just been bitten by a bug that would have been caught by this new warning. I'll stick to the point:<br><br><div class="gmail_quote"><div>[snip]</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"> 2. Is matching against an already-bound variable a check we want?<br></blockquote><div><br></div><div>[snip]</div>
<div><br></div><div>Yes, because it protects against a kind of bug that is otherwise very easy to introduce in Erlang:</div><div><br></div><div>Quite often when debugging I want to add a new line or two to a function, to examine or check an intermediate value. e.g.:</div>
<div><br></div><div> ...</div><div> Result = function_call(),</div><div> validate(Result),</div><div> ...</div><div><br></div><div>The problem is that I now have to scan down the whole rest of the function just in case Result has already been used because, if it has, then it's going to compile fine and cause a run time error!</div>
<div><br></div><div>It's such a simple scenario that it seems very annoying that Erlang can't help me to avoid it. The "cost" of not being able to do a "backwards" assignment with the newly bound variable on the right doesn't seem like a cost at all: I find code that is that way round, or mixes assignments on the left and right (!) to be unnecessarily confusing. I'd be happy if this was required by the language but as this is the real world I'd be happy with a warning I could turn on.</div>
<div><br></div><div>Sam.</div></div></div>