typestar

Fundamentos del lenguaje

27 pasos en 9 series de Elixir.

Elixir es un lenguaje funcional que compila a la máquina virtual de Erlang, la que mantiene vivas centrales telefónicas y brokers de mensajes desde los años ochenta. Jose Valim le puso una cara moderna a esa máquina en 2012: sintaxis con sabor a Ruby, herramientas de primera clase y macros, sobre datos inmutables, coincidencia de patrones en todas partes y procesos tan baratos que arrancas uno por tarea sin pensarlo.

Este tour cubre el núcleo del lenguaje: módulos y cláusulas de función, el operador de coincidencia y su pin, listas, tuplas, maps y structs, los operadores pipe y de captura que le dan a Elixir su forma, cadenas y sigils, los encadenamientos con with que doman la plomería de ok y error, y al final procesos de verdad — spawn, Task y Agent. El bis entrega programas completos. Cada fragmento corre sin advertencias bajo elixir.

Empieza este tour

Módulos y funciones

  • Módulos y defEl programa Elixir más pequeño: un módulo de funciones con nombre y dos llamadas al nivel superior.
  • Una línea y defpDos formas de función: el cuerpo de una línea con do: y el ayudante privado que solo su módulo puede llamar.
  • Atributos de móduloConstantes de compilación para calcular un retardo de radio, declaradas una vez con @ y leídas donde sea.

Coincidencia de patrones

  • El operador de coincidenciaTres coincidencias: desestructurar una tupla, partir una lista y fijar un valor ya vinculado.
  • Cláusulas de funciónUna cuenta regresiva escrita en cláusulas: patrones y una guarda eligen la línea; la recursión lleva el bucle.
  • case y guardasUna sola expresión case clasifica lecturas de sensor en tres resultados por forma y tamaño.

Listas y tuplas

  • Listas y consArmar una ruta de navegación anteponiendo, empalmando y recorriendo cabeza y cola.
  • Tuplas y pares :okLa convención de tuplas {:ok, ...} y {:error, ...}, hablada aquí por una bóveda terca.
  • RangosDos extremos y un paso reemplazan a una lista entera de números.

Maps y structs

  • MapsUn registro de exoplaneta leído de cuatro maneras: punto, corchetes, Map.get y un patrón.
  • Actualizar mapsActualizaciones inmutables: cada cambio al marcador devuelve un map nuevo y deja el original en paz.
  • Structsdefstruct le da al taller de kayaks una forma fija con valores por defecto y claves verificadas.

Enum y pipes

  • Funciones anónimasfn crea valores función: una calculadora de propina, un aplica-dos-veces y una pasada a Enum.map.
  • El operador de capturaTres formas de escribir el atajo &, desde capturar una función con nombre hasta fragmentos en línea.
  • El operador pipeUna cosecha de miel fluye por map, filter, sum y round sin una sola llamada anidada.

Cadenas y sigils

  • Interpolación de cadenasAritmética de panadería puesta directo en las cadenas con #{} y <>.
  • El módulo StringSeis transformaciones del lema de un taller, una función de String a la vez.
  • SigilsTres sigils: ~w para listas de palabras, ~s para cadenas llenas de comillas, ~D para fechas reales.

Control de flujo

  • if y condLos dos condicionales devuelven valores: if para dos ramas, cond para una escalera de condiciones.
  • Encadenamientos con withUna lista de despegue: with recorre el camino feliz de tuplas ok y else atrapa el primer fallo.
  • Comprensiones con forDos comprensiones: una mano de cartas de dos generadores y un map de un filtro con into:.

Procesos

  • spawn y receiveUn proceso obrero, un mensaje a casa: el modelo del buzón en trece líneas.
  • Task.asyncTres censos de arrecife corren en procesos paralelos y terminan en el tiempo de uno.
  • AgentsUn frasco de notas guardado por un Agent: el estado vive en un proceso, no en una variable.

Bis

  • word_freq.exsUna tabla de frecuencia de palabras armada por un pipeline: minúsculas, partir, contar, ordenar, graficar.
  • grade_report.exsLos puntajes de quiz se pliegan en promedios y calificaciones, y luego en un reporte formateado.
  • temp_stats.exsUna semana de máximas diarias reducida a mínima, máxima y media, con una barra a escala por día.

Los otros tours de Elixir