Matching en la cabeza en Erlang
Una función, varias cláusulas: la cabeza hace la ramificación.
%% One function, several clauses: the head does the branching.
describe({call, Line, _}) ->
io_lib:format("line ~p connected", [Line]);
describe({busy, Line}) ->
io_lib:format("line ~p engaged", [Line]);
describe({fault, Line, Why}) ->
io_lib:format("line ~p down: ~s", [Line, Why]).
main(_) ->
Events = [{call, 3, "5560199"}, {busy, 7},
{fault, 12, "wet pair"}],
[io:format("~s~n", [describe(E)]) || E <- Events].
Cómo funciona
- Cada cláusula de
describematchea una forma de evento distinta. - Las cláusulas se prueban de arriba abajo; gana el primer match.
io_lib:formatarma el string para que otro lo imprima.
El intento, en números
- Líneas
- 12
- Caracteres a escribir
- 415
- Tokens
- 144
- Ritmo de tres estrellas
- 60 tpm
Al ritmo de tres estrellas de 60 tokens por minuto, este intento toma unos 144 segundos.
Paso 1 de 4 en Coincidencia de patrones; paso 4 de 31 en Fundamentos del lenguaje.