Variable instances (Re: Trace on Variable assignment)

Ulf Wiger <>
Fri Nov 10 14:40:47 CET 2000


On Fri, 10 Nov 2000, Richard Carlsson wrote:

>However, a nice compromise could be to let the compiler
>warn about unused variables (when the `warn_unused_vars' option is set)
>*unless* the variable is underscore-prefixed.
>
>That means that typical errors like:
>
>		S1 = foo(S0),
>		S2 = bar(S0),
>		S3 = foo(S2),
>
>will be warned about (S1 is not used), but no complaints would be issued
>about your example {clause,_Line,[{_Type,...
>
>	/Richard Carlsson

Hmmm, I tried it on my own code. Since I've never liked the _Var
convention (since they are actually bound, something that can cause
very obscure bugs), I have lots of variables for documentation
purposes only. Relying on the compiler to eliminate unnecessary
variable bindings, I've come to do that even more.

Thus, I get so many warnings from the linter that the
'warn_unused_vars' option becomes unwieldy.


In our work on writing design rules, we've never been able to agree on
a recommendation for "don't care" variables. Some like to annotate
with underscores, others have tried it, but recoiled in horror when
they've had to chase down weird pattern-matching bugs (not
understanding from the start that they were actually binding
variables). Others, like Peter Lundell, hate "don't care" variables
(even '_' which is truly "don't care" but doesn't let you clarify
what kind of variable it should be), and never use them at all.


/Uffe
-- 
Ulf Wiger                                    tfn: +46  8 719 81 95
Senior System Architect                      mob: +46 70 519 81 95
Strategic Product & System Management    ATM Multiservice Networks
Data Backbone & Optical Services Division      Ericsson Telecom AB




More information about the erlang-questions mailing list