<div dir="ltr"><div dir="ltr">Den tors 28 jan. 2021 kl 15:38 skrev Coconut <<a href="mailto:c0c0nut@protonmail.com">c0c0nut@protonmail.com</a>>:<br></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div>> The question is where we can go. If we don't find ways to improve - in a fairly big way - we will keep losing traction.<br></div><div><br></div><div>Are you not making the assumption here that this pinning operator is an improvement that Erlang desperately needs (e.g. to not die)?</div></blockquote><div><br></div><div>It's not desperately needed on its own. But I am making the assumption that without a change like it (such as moving away completely from already-bound variables in patterns, using guards only instead), I don't see many ways to changing other scoping rules either, in either direction, in a way that preserves compatibility. That in turn limits a lot of other things.</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div>You are right, Erlang has to find ways to improve, but is the pinning operator that, an improvement?</div></blockquote><div><br></div><div>That is the question that I want to focus on. I think I have been clear through the examples that I have shown that I do think it is an improvement on its own. In my opinion it is less long-winded than using guards only, and at the same time stands out quite well when reading the code, showing the programmer's intent. Some people might not agree with this judgement, and that's fine. Any actual decision has to take a lot of people into account.</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div>I agree with responses such as (this particular one is by zxq9) this:<br></div><div><div><br></div></div><div>> Changes that move directly against one of the most basic core concepts of the language are not only a disservice to existing codebases written with those core concepts in mind, but also leaves homeless users who are attracted to Erlang specifically because of those core concepts.<br></div></blockquote><div><br></div><div>I would argue that implicitly using an already-bound variable in a pattern is not a core feature, not by far compared to other core features. As I showed, it occurs in most every module, but on a small percentage of lines. It's rare enough that it could be feasibly deprecated and dropped from the language instead - some people on the list expressed a preference for this variant - and even those with big codebases could handle such a transition pretty easily. If it wasn't there, most of Erlang would remain the same. Many users wouldn't even miss it. I would prefer to keep it because it makes some kinds of code neater, but I would like to make it explicit so you see that it's there.</div><div><div><div dir="ltr" class="gmail_signature"><br>        /Richard</div></div></div><div><br></div></div></div>