[erlang-questions] Bound(?) var in anonymous fun

Manuel A. Rubio "Bombadil" bombadil@REDACTED
Tue Dec 18 12:08:33 CET 2012


Hi Pablo,

El 2012-12-18 11:54, Pablo Vieytes escribió:
> I guessed Key was bound so I could use for pattern matching. It's
> very easy to fix it but I don't know why it doesn't work.

This doesn't works well because the params are not inside of binding in 
closures. The params are the interface with the outside world and will 
be confuse know if a param is a binding or not. By default Erlang hasn't 
binding in function params.

> Fixed version:
>
> delete_key_from_list(Key, StatusList)->
>     lists:foldr(
>       fun(K, Acc) when K == Key ->
>       Acc;
>  (Another, Acc) ->
>       [Another|Acc]
>       end,
>       [],
>       StatusList).

This code could be writted as:

delete_key_from_list(Key, StatusList)->
     lists:filter(fun(X) -> Key =/= X end, StatusList).

Regards,
Manuel Rubio.



More information about the erlang-questions mailing list