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

Dmitry Klionsky <>
Tue Dec 18 12:22:07 CET 2012


On 12/18/2012 02:08 PM, Manuel A. Rubio "Bombadil" wrote:
> 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.
> _______________________________________________
> erlang-questions mailing list
> 
> http://erlang.org/mailman/listinfo/erlang-questions

Or even more readable as:

delete_key_from_list(Key, StatusList)->
     [Status || Status <- StatusList, Status =/= Key].

-- 
Best regards,
Dmitry Klionsky




More information about the erlang-questions mailing list