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
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.