Funs en Erlang
fun ... end hace un valor de función; las cláusulas ramifican adentro.
%% fun ... end makes a function value; clauses branch inside it.
main(_) ->
Surcharge = fun(night) -> 0;
(day) -> 5
end,
io:format("Night extra: ~p~n", [Surcharge(night)]),
io:format("Day extra: ~p~n", [Surcharge(day)]),
%% Funs close over their surroundings.
Rate = 4,
Bill = fun(Minutes) -> Minutes * Rate end,
io:format("12 minutes: ~p pence~n", [Bill(12)]),
%% Named library funs pass with fun Name/Arity.
io:format("~p~n", [lists:map(fun erlang:abs/1, [-3, 4, -7])]).
Cómo funciona
- Un fun puede tener cláusulas con patrones como cualquier función.
- Los funs encierran ataduras de alrededor como
Rate. fun erlang:abs/1pasa una función nombrada por aridad.
Palabras clave y builtins usados aquí
absendfun
El intento, en números
- Líneas
- 15
- Caracteres a escribir
- 474
- Tokens
- 133
- Ritmo de tres estrellas
- 60 tpm
Al ritmo de tres estrellas de 60 tokens por minuto, este intento toma unos 133 segundos.
Paso 2 de 4 en El módulo lists; paso 12 de 31 en Fundamentos del lenguaje.