New EEP draft: Pinning operator ^ in patterns

Wojtek Surowka wojteksurowka@REDACTED
Thu Jan 28 15:38:22 CET 2021

>Can you please explain why you think the proposal is half-baked.

The proposal is half baked because it introduces a notation which is in no way compatible or similar to existing Erlang syntax. The proposal is half baked because it will work completely only when the backward incompatible change is introduced in the future as discussed earlier. >From this perspective this proposal is presented as something self contained and small, but in reality it is thought of as beginning of longer process leading to change in fundamental part of the language.

> The feature is not strictly necessary, but I and many others recognize that it would improve readability.  Must all changes that are not strictly necessary be forbidden?  How can we then achieve improvement?

When we speak about changes in core language, leading to backward compatibility I believe yes only necessary changes should be done in this way. Improvement is achieved in other ways serving more developers in less intrusive way. Actually nearly all changes in Erlang - when I look at release notes - solve real problems in the way which does not have potential of impacting developers not interested in a specific change. The huge discussion about the pinning operator is because this change is not like the others.

> Can you please explain why you state that the feature proposal is core-breaking?  I have tried to explain many times why I do not agree to that, and still this statement comes up instead of counter-arguments.

It changes the way pattern matching works, so when it is made mandatory it is breaking by definition.

The thing making this whole discussion a little bit unreal is that we are talking about a change in the core language solving a problem which was not really raised that much. I believe the closer something is to the core of the language the more important reasons to make a change should be. No one has any problem when a new stdlib function or module is added. No one has any problem if some great new functionality - like maps - is added with backward compatibility and value for potentially all developers. But when a proposal is made to introduce some alien notation to solve esoteric problem, and two people arguing for it argue as it were another maps or some other very valuable change, sending tens of long emails - it feels otherworldly a little.


Wojtek Surowka

More information about the erlang-questions mailing list