Introducción a Elixir

Conoce el lenguaje funcional que está revolucionando el desarrollo de software concurrente.

¿Qué es Elixir?

Elixir es un lenguaje de programación funcional, concurrente y de propósito general. Fue creado por José Valim en 2011 y se ejecuta sobre la máquina virtual de Erlang (BEAM), heredando décadas de experiencia en sistemas distribuidos y tolerantes a fallos.

¿Por qué Elixir?

Elixir combina la productividad de lenguajes modernos como Ruby con el poder de la plataforma Erlang, usada por empresas como WhatsApp, Discord y Pinterest para manejar millones de conexiones concurrentes.

Características principales

Instalación

La forma más sencilla de instalar Elixir depende de tu sistema operativo:

macOS (con Homebrew)

brew install elixir

Ubuntu/Debian

# Agregar repositorio de Erlang Solutions
wget https://packages.erlang-solutions.com/erlang-solutions_2.0_all.deb
sudo dpkg -i erlang-solutions_2.0_all.deb
sudo apt-get update

# Instalar Elixir
sudo apt-get install esl-erlang elixir

Windows

Descarga el instalador desde elixir-lang.org o usa Chocolatey:

choco install elixir

Verificar la instalación

elixir --version
# Elixir 1.15.0 (compiled with Erlang/OTP 26)

IEx: El shell interactivo

IEx (Interactive Elixir) es tu herramienta principal para experimentar con el lenguaje. Inícialo escribiendo iex en tu terminal:

$ iex
Erlang/OTP 26 [erts-14.0] ...

Interactive Elixir (1.15.0) - press Ctrl+C to exit
iex(1)> 1 + 1
2
iex(2)> "Hola" <> " Mundo"
"Hola Mundo"
iex(3)> IO.puts("¡Bienvenido a Elixir!")
¡Bienvenido a Elixir!
:ok
Consejo

En IEx puedes usar h/1 para obtener ayuda sobre cualquier función. Por ejemplo: h IO.puts

Comandos útiles de IEx

ComandoDescripción
h/1Muestra documentación de una función
i/1Muestra información sobre un valor
c/1Compila un archivo .ex
r/1Recompila un módulo
v/1Recupera un valor anterior por número de línea

Tu primer programa

Crea un archivo llamado hola.exs:

# hola.exs
IO.puts("¡Hola desde Elixir!")

nombre = "Mundo"
IO.puts("¡Hola, #{nombre}!")

Ejecútalo con:

elixir hola.exs
# ¡Hola desde Elixir!
# ¡Hola, Mundo!
Archivos .ex vs .exs

.ex son archivos para compilar. .exs son scripts que se ejecutan directamente. Usa .exs para scripts y pruebas, .ex para código de producción.

Operadores básicos

Aritméticos

iex> 10 + 5     # Suma: 15
iex> 10 - 5     # Resta: 5
iex> 10 * 5     # Multiplicación: 50
iex> 10 / 5     # División (siempre float): 2.0
iex> div(10, 3) # División entera: 3
iex> rem(10, 3) # Resto: 1

Comparación

iex> 1 == 1     # Igual: true
iex> 1 != 2     # Diferente: true
iex> 1 < 2      # Menor que: true
iex> 1 <= 2     # Menor o igual: true
iex> 1 === 1.0  # Estrictamente igual: false
iex> 1 == 1.0   # Igual (permite conversión): true

Lógicos

iex> true and true   # true
iex> true or false   # true
iex> not true         # false

# Versiones que aceptan cualquier valor (no solo booleanos)
iex> 1 || 2           # 1 (primer valor "truthy")
iex> nil || 2         # 2
iex> 1 && 2           # 2 (último valor si todos son "truthy")
iex> nil && 2         # nil
Valores "truthy" y "falsy"

En Elixir, solo nil y false son considerados "falsy". Todo lo demás (incluyendo 0 y "") es "truthy".

La filosofía de Elixir

Antes de continuar, es importante entender algunos principios fundamentales:

Inmutabilidad

En Elixir, los datos nunca cambian. Cuando "modificas" algo, en realidad creas una copia con los cambios:

iex> lista = [1, 2, 3]
[1, 2, 3]
iex> nueva_lista = [0 | lista]
[0, 1, 2, 3]
iex> lista  # La original no cambió
[1, 2, 3]

Funciones puras

Las funciones ideales no tienen efectos secundarios: dado el mismo input, siempre producen el mismo output.

"Let it crash"

En lugar de programación defensiva excesiva, Elixir favorece dejar que los procesos fallen y que los supervisores los reinicien. Esto lleva a código más limpio y sistemas más robustos.

Ejercicio 1.1 Explora IEx Básico

Abre IEx y experimenta:

  • Calcula el área de un círculo con radio 5 (usa 3.14159 * 5 * 5)
  • Concatena tu nombre y apellido usando <>
  • Usa h String.upcase para ver la documentación
  • Prueba String.upcase("hola")
Ejercicio 1.2 Script de saludo Básico

Crea un script saludo.exs que:

  • Defina variables para nombre y edad
  • Imprima un saludo personalizado usando interpolación de strings
  • Calcule y muestre el año de nacimiento aproximado