<div dir="ltr"><div>The shadowing warning is there because it is only there and list comprehensions where variable in patterns are shadowed. No, it isn't consistent but it follows how other functional languages do it, IIRC. The problems with an evolving language.<br><br></div>Robert<br><br></div><div class="gmail_extra"><br><div class="gmail_quote">On 30 January 2017 at 00:17, Richard A. O'Keefe <span dir="ltr"><<a href="mailto:ok@cs.otago.ac.nz" target="_blank">ok@cs.otago.ac.nz</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class=""><br>
<br>
On 30/01/17 11:06 AM, Robert Virding wrote:<br>
</span><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">
When defining a fun the shadowing of variables occurring in arguments is<br>
inconsistent.<br>
<br></span><span class="">
Why the difference? Shouldn't we be consistent in shadowing all variables?<br>
</span></blockquote>
<br>
I have always wished that Erlang did no shadowing at all.<br>
<br>
a(X) -><br>
    case X+1 of X -> ooh ; _ -> ahh end.<br>
<br>
b(X) -><br>
    (fun (X) -> ooh ; (_) -> ahh end)(X+1).<br>
<br>
<br>
2> foo:a(0).<br>
ahh<br>
3> foo:b(0).<br>
ooh<br>
<br>
Call *that* consistent?  I don't.<br>
<br>
<br>
1> c(foo).<br>
foo.erl:8: Warning: this clause cannot match because a previous clause at line 8 always matches<br>
foo.erl:8: Warning: variable 'X' is unused<br>
foo.erl:8: Warning: variable 'X' shadowed in 'fun'<br>
<br>
That warning about 'X' being shadowed?<br>
<br>
LOVE IT LOVE IT LOVE IT!<div class="HOEnZb"><div class="h5"><br>
<br>
______________________________<wbr>_________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org" target="_blank">erlang-questions@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-questions" rel="noreferrer" target="_blank">http://erlang.org/mailman/list<wbr>info/erlang-questions</a><br>
</div></div></blockquote></div><br></div>