Re: New EEP draft: Pinning operator ^ in patterns
"Richard O'Keefe" <[email protected]>
| Newsgroups | gmane.comp.lang.erlang.general,gmane.comp.lang.erlang.eeps |
|---|---|
| Message-ID | <CABcYAdJvTmJjZ1FcM=CTU6sZi6AiBQmj-Q1QQmyWv-Z9EmL5fA@mail.gmail.com> |
"This fills a much-needed gap." Erlang functions are as a rule small enough that you shouldn't ever shadow a variable. One of the worst features of Erlang is that you can write foo(X) -> fun (X) -> fun (X) -> 1 end end. and have three different variables all called X, and one of the good things about erlc is that it tells you. foo.erl:3: Warning: variable 'X' is unused foo.erl:3: Warning: variable 'X' is unused foo.erl:3: Warning: variable 'X' shadowed in 'fun' foo.erl:3: Warning: variable 'X' shadowed in 'fun' The very last thing we want is a notation that lets us have two different variables with the same name in a single pattern. On Fri, 25 Dec 2020 at 09:10, Richard Carlsson <[email protected]> wrote: > The ^ operator allows you to annotate already-bound pattern variables as > ^X, like in Elixir. This is less error prone when code is being refactored > and moved around so that variables previously new in a pattern may become > bound, or vice versa, and makes it easier for the reader to see the intent > of the code. > > See also https://github.com/erlang/otp/pull/2951 > > Ho ho ho, > > /Richard & the good folks at WhatsApp >