Re: no function clause matching became no case clause matching exception

Frans Schneider <[email protected]>
Newsgroups gmane.comp.lang.erlang.general
Message-ID <[email protected]>
The construct is used to process a list which should contain a mixture 
of #o{} and #oa{} records. If the list contains other types of records 
--which should never be the case--, it must fail. This is the actual code:

This is the actual code

     ATE_ids = [(fun(#oa{id = AT_id}) -> AT_id;
                    (#o{id = AT_id}) -> AT_id end)(AT) || AT <- ATEs],

It enables me to process different records/maps or whatever is in the 
list and will fail when something is in the list that shouldn't be there.


Op 10-12-2021 om 16:16 schreef Eckard Brauer:
> Just a bit curious, what is the lambda fun intended to do?
>
> fun(a) -> "a" end
>
> looks to me as it would only evaluate if called with a single symbol a
> as arg and (silently) fail otherwise. If I extend a littl I get:
>
> 10> [(fun F(a) -> "a"; F(_) -> nothing end)(R) || R <- [a, b, c]].
> ["a",nothing,nothing]
>
> Don't mind if the question is stupid, I'm still learning...
> E.
>
>
>> Dear list,
>>
>> The following list comprehension used to give a no function clause
>> matching exception in previous version of Erlang. Now it will emit a
>> no case clause matching exception. Is this expected behavior?
>>
>>       [(fun(a) -> "a" end)(R) || R <- [a, b, c]]
>>
>> NB: I use this construct to process lists with different record
>> types. In the unit tests I was testing explicitly on this type of
>> exception.
>>
>> Frans
>>
>>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.