El pattern matching en Elm es una herramienta poderosa para trabajar con listas, tuplas, registros y tipos algebraicos.
Permite desestructurar datos y cubrir todos los casos posibles de manera clara y segura, gracias al compilador.
Pattern Matching con listas:
primerElemento : List Int -> String
primerElemento lista =
case lista of
[] ->
"Lista vacía"
x :: xs ->
"El primer elemento es " ++ String.fromInt x
[] → lista vacía.
x :: xs → descompone la lista en el primer elemento x y el resto xs.
Ejemplo:
primerElemento [] -- "Lista vacía"
primerElemento [10,20,30] -- "El primer elemento es 10"
Pattern Matching con tuplas
sumaTupla : (Int, Int) -> Int
sumaTupla tupla =
case tupla of
(a, b) ->
a + b
sumaTupla (3, 4) -- 7
También podés combinar:
describeTupla : (String, Int) -> String
describeTupla (nombre, edad) =
nombre ++ " tiene " ++ String.fromInt edad ++ " años"
Pattern Matching con registros
type alias Persona =
{ nombre : String
, edad : Int
}
saludo : Persona -> String
saludo persona =
case persona of
{ nombre, edad } ->
"Hola " ++ nombre ++ ", tenés " ++ String.fromInt edad ++ " años"
Ejemplo:
saludo { nombre = "Ana", edad = 30 }
-- "Hola Ana, tenés 30 años"
Pattern Matching con tipos algebraicos
Elm brilla con sus tipos definidos por el usuario.
type Resultado
= Exito String
| Error String
procesar : Resultado -> String
procesar res =
case res of
Exito mensaje ->
"Todo salió bien: " ++ mensaje
Error mensaje ->
"Ocurrió un error: " ++ mensaje
Ejemplo:
procesar (Exito "Archivo guardado")
-- "Todo salió bien: Archivo guardado"
procesar (Error "Permiso denegado")
-- "Ocurrió un error: Permiso denegado"
Algo clave en Elm: el compilador exige cubrir todos los casos posibles en un case.
Si olvidás uno, el código no compila → esto evita errores en tiempo de ejecución.
- case ... of permite desestructurar listas, tuplas, registros y tipos algebraicos.
- Es una forma segura y declarativa de trabajar con datos.
- El compilador obliga a cubrir todos los casos, garantizando que no haya estados no contemplados.
El pattern matching es uno de los pilares que hace a Elm un lenguaje expresivo y confiable.