typestar

Fundamentos del lenguaje

31 pasos en 9 series de Erlang.

Erlang se construyó dentro de Ericsson en los años 80 para correr centrales telefónicas: sistemas que no pueden detenerse, donde la falla se espera y se maneja en vez de prevenirse. Sus respuestas — millones de procesos baratos que no comparten nada, paso de mensajes como única comunicación, supervisores reiniciando lo que muere, código cambiado en un sistema corriendo — se volvieron el plano que todo sistema de actores copió desde entonces. WhatsApp sirvió célebremente cientos de millones de usuarios sobre él con un equipo de docenas.

Este tour teclea el núcleo a través de una central telefónica, naturalmente: variables de asignación única y átomos, tuplas y listas con matching de cabeza y cola, cabezas de función y guardas como el idioma de ramificación, case e if, recursión de cola con acumuladores, comprensiones de lista, el módulo lists, funs, maps y records y proplists, strings contra binarios, tuplas ok/error, try/catch con sus tres clases de error — y el corazón del lenguaje: spawn, !, receive con timeouts, la forma llamada-y-respuesta, y monitores que vuelven mensaje la muerte de un proceso. El Bis es el trío de scripts de siempre en Erlang honesto con sabor a OTP.

Empieza este tour

Valores

Coincidencia de patrones

  • Matching en la cabezaUna función, varias cláusulas: la cabeza hace la ramificación.
  • Guardaswhen refina una cláusula después de que su patrón matchea.
  • caseMatchea un valor contra patrones, en orden, como expresión.
  • ifTodo guardas, probadas en orden; true es el brazo else.

Recursión y comprensiones

El módulo lists

  • El módulo listsmap, filter, foldl, sort: el kit diario.
  • Funsfun ... end hace un valor de función; las cláusulas ramifican adentro.
  • zip y seqlists:seq cuenta, zip empareja, unzip separa de vuelta.
  • Ordenarsort toma un fun; keysort ordena tuplas etiquetadas por posición.

Formas de datos

  • Maps=> escribe, := actualiza y matchea, maps:get lee con defectos.
  • RecordsUna tupla nombrada con azúcar de campos en compilación.
  • ProplistsTuplas etiquetadas en una lista: el estilo clásico de opciones.
  • Maps a escalamaps:fold, filter y merge trabajan la tabla entera de una vez.

Texto y números

Errores como datos

  • Tuplas ok y error{ok, Valor} y {error, Razon}: la convención que toda API guarda.
  • try/catchTres clases de error: throw, error y exit, atrapadas por nombre.

Procesos

Bis

  • word_freq.erlUna tabla de frecuencias con lexemes, maps:update_with y un orden.
  • grade_report.erlBoletines desde tuplas etiquetadas, notas por guardas, ~4.1f.
  • temp_stats.erlUna semana de temperaturas: extremo por pliegue, barras, saltos.

Los otros tours de Erlang