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.
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.