[erlang-questions] Inconsistent shadowing of variables in a fun

Robert Virding <>
Sun Jan 29 23:06:31 CET 2017


When defining a fun the shadowing of variables occurring in arguments is
inconsistent. So with

a(X, N) ->
    fun (<<X,Y:N,_/binary>>) -> {X,Y} end.

the X in the fun arguments shadows the X from before it while the N is
imported and used. An example:

1> c(bt).
bt.erl:8: Warning: variable 'X' is unused
bt.erl:9: Warning: variable 'X' shadowed in 'fun'
{ok,bt}
2> f(G),G=bt:a(34,8).
#Fun<bt.1.1070726>
3> G(<<1,2,3,4,5>>).
{1,2}
4> f(G),G=bt:a(34,16).
#Fun<bt.1.1070726>
5> G(<<1,2,3,4,5>>).
{1,515}

Why the difference? Shouldn't we be consistent in shadowing all variables?

Robert
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20170129/aada84e2/attachment.html>


More information about the erlang-questions mailing list