What is the simplest way to write an if statement in Erlang, where a part of the guard is member(E, L)
, i.e., testing if E
is a member of the list L
? The naive approach is:
if
... andalso member(E,L) -> ...
end
But is does not work becuase, if I understand correctly, member
is not a guard expression. Which way will work?
Member functionality is, as you say, not a valid guard. Instead you might consider using a case pattern? It's possibly to include your other if-clauses in the case expression.
case {member(E,L),Expr} of
{true,true} -> do(), is_member;
{true,false} -> is_member;
{false,_} -> no_member
end
It is not possible to test list membership in a guard in Erlang. You have to do this:
f(E, L) ->
case lists:member(E, L) of
true -> ...;
false -> ...
end.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With