Soy nuevo en Erlang y tal vez me perdí este problema en el tutorial aunque es trivial. Digamos que tengo una lista de pares de {Key, Value} obtenidos de erlang: fun_info/1. Quiero saber la validez de la función, el resto de la lista no me interesa. Así que escribir algo como:Encontrar un valor en la lista de {clave, valor} en Erlang
find_value(_, []) ->
nothing;
find_value(Key, [{Key, Value} | _]) ->
Value;
find_value(Key, [_ | T]) ->
find_value(Key, T).
y luego hacer:
find_value(arity, erlang:fun_info(F)).
que trabaja muy bien, pero debería ser algo así como find_value una rutina muy común que escribirlo? Sin embargo, no pude encontrar su 'análogo en BIFs'. Entonces, la pregunta es: ¿existe una forma agradable y elegante de obtener un valor para una clave de una lista de tuplas {clave, valor}?
Esto se ve muy bien, pero tengo otra pregunta tonta entonces: lo que es '=: ='? ¿Por qué '==' no es deseado aquí? – akalenuk
¡Hola! == puede usarse para comparar números, de modo que 1.0 es igual a 1, pero en otras comparaciones, debe usar el operador de comparación "exacto", que es =: = (y haría 1.0 diferente de 1), consulte: http://www.erlang.org/doc/reference_manual/expressions.html#id76768 – marcelog
Este enfoque es bueno para Haskell perezoso, pero en Erlang tendrá que recorrer toda la 'Lista' en cualquier caso, mientras' get_value/2' se detiene cuando lo encuentra el primer partido –