Re: New EEP draft: Pinning operator ^ in patterns
Loïc Hoguin <[email protected]>
| Newsgroups | gmane.comp.lang.erlang.general |
|---|---|
| Organization | Nine Nines |
| Message-ID | <[email protected]> |
On 18/01/2021 11:53, Stefan Reichör wrote: > Hallo Loïc, > > I am a newcomer to Erlang. I am subscribed to this list since a few > days. I am really positively surprised how active the Erlang community is. The list is usually not that active. >> Being able to write "A = 5, A = inc(4)." is what makes the Erlang language the best I've used in my opinion. > > Could you please explain the semantics of this statement? > It is not obvious for me as a beginner. > > Why is such a statement so useful for you? "A = 5," means the variable A becomes bound and has the value 5. Followed by "A = inc(4)," where it is implied that "inc(X) -> X + 1." Because A is already bound, this becomes a match. The match will only succeed if the value returned by the inc/1 function is the same as the value already bound to A. If the inc/1 function had a bug and somehow returned the wrong value, the match will fail. It's not so much about usefulness and more about a thought process. All instances of A must have the same value as the first time it was "matched" otherwise the program doesn't work. In my mind, there is no real distinction between binding and matching, it's all just matching. The first match just happens to dictate what the value must be subsequently. Having to annotate explicitly the matching of bound variables would be a pretty big change to that thought process, so the rewards would have to be really worth it. It's similar to the introduction of maps in the language except maps greatly simplified many things we routinely do. The rewards were far greater than the costs of adapting the thought process. Have fun with Erlang, it's the best! -- Loïc Hoguin https://ninenines.eu