New EEP draft: Pinning operator ^ in patterns
zxq9
zxq9@REDACTED
Thu Jan 21 17:27:42 CET 2021
On 2021/01/22 1:11, Kostis Sagonas wrote:
> On 1/21/21 3:41 PM, Richard Carlsson wrote:
>> Some weird code becomes obvious when annotated.
>>
>> What does this line do?
>>
>> _ = [M = M:module_info(module) || M <- Needed],
>>
>> Oh, it's a multi-assertion!
>>
>> _ = [^M = M:module_info(module) || M <- Needed],
>
> I disagree.
>
> This is _exactly_ the kind of code where you do *not* want such an
> annotation. You want to rewrite this to something like:
>
> true = lists:all(fun (M) -> M =:= M:module_info(module) end, Needed),
>
> No matching is required here.
>
> Kostis
+100
And further on this note, the entire example illustrates quite clearly
why Erlangers don't want this.
"But I've been doing Elixir so much lately and..."
Yeah, that's Elixir. Stay over there. The paradigms do not converge.
How much harder does this have to be stated?
-Craig
More information about the erlang-questions
mailing list