New EEP draft: Pinning operator ^ in patterns

empro2@REDACTED empro2@REDACTED
Fri Jan 22 12:17:41 CET 2021


On Wed, 20 Jan 2021 20:59:49 +0100
Richard Carlsson <carlsson.richard@REDACTED> wrote:

> Den ons 20 jan. 2021 kl 17:27 skrev Raimo Niskanen <
> raimo+erlang-questions@REDACTED>:
>
> > 1: foo(Y) ->
> > 2:      F = fun (Y) ->
> > 3:           FF = fun (Y) ->
> > 4:                    ^Y = Y - 1
> > 5:                end,
> > 6:           FF(Y + 1)
> > 7:          end,
> > 8:      F(Y + 1).


> > Can I match against the Y bound on line 1 from within FF/1?
> >
>
> No, that's buried by two levels of shadowing. In the head of F on line 2
> you could refer to the Y on line 1, but that's it. Even in the body of F,
> the outer Y would not be available.

Unless next year someone wants to solve a problem by C10 in

 http://erlang.org/pipermail/erlang-questions/2021-January/100399.html

> Bruijn notation, I think such uses would lead to madness.

I have seen pigs fly ... they say.

For what reason(s) not put it like this?

> > 1: foo(Y) ->
> > 2:      F = fun (B) ->
> > 3:           FF = fun (C) ->
> > 4:                    B = Y - 1
> > 5:                end,
> > 6:           FF(B + 1)
> > 7:          end,
> > 8:      F(Y + 1).

Y is it useful to have all those Ys in all examples?

I can imagine only two places:
Highlighting the making visible of an invisible difference: `{^Y, Y} = ...`
And a section with examples proving that shadowing is not affected.

    ~Michael

--

“Even after a thousand explanations a fool is no wiser,
 whereas someone intelligent requires only one fourth of these.”

	– from the Mahābhārata (महाभारत)





More information about the erlang-questions mailing list