En Elm, un Dict (abreviatura de Dictionary) es una estructura de datos inmutable que almacena pares clave–valor, de forma ordenada y segura por tipos.
Un Dict se define como:
Dict comparable value
- comparable → tipo de la clave (por ejemplo, `String`, `Int`, etc.)
- value → tipo del valor asociado
Solo podés usar tipos comparables como claves, es decir, tipos con un orden definido (Int, String, Char, etc.).
No podés usar listas, records o funciones como claves.
Podés crear un diccionario vacío o con elementos iniciales:
import Dict exposing (Dict)
-- Vacío
usuarios : Dict Int String
usuarios = Dict.empty
-- Con valores
usuariosIniciales : Dict Int String
usuariosIniciales =
Dict.fromList
[ (1, "Ana")
, (2, "Luis")
, (3, "María")
]
Para buscar un valor por su clave:
Dict.get 2 usuariosIniciales
-- Resultado: Just "Luis"
Dict.get 5 usuariosIniciales
-- Resultado: Nothing
El resultado es un Maybe, lo que evita errores por claves inexistentes.
Podés manejarlo así:
case Dict.get 5 usuariosIniciales of
Just nombre ->
"Usuario encontrado: " ++ nombre
Nothing ->
"No existe ese usuario."
Insertar y eliminar elementos:
-- Agregar o actualizar
usuarios2 =
Dict.insert 4 "Sofía" usuariosIniciales
-- Eliminar
usuarios3 =
Dict.remove 2 usuarios2
Todo es inmutable: estas operaciones devuelven un nuevo Dict, no modifican el original.
Podés convertirlo a lista y trabajar con sus elementos:
Dict.toList usuariosIniciales
-- [(1, "Ana"), (2, "Luis"), (3, "María")]
List.map (\(id, nombre) -> nombre ++ " (" ++ String.fromInt id ++ ")")
(Dict.toList usuariosIniciales)
O usar funciones específicas:
Dict.map (\_ nombre -> String.toUpper nombre) usuariosIniciales
Dict.member key dict: ¿Existe la clave?
Dict.size dict: Cantidad de elementos
Dict.keys dict: Lista de claves
Dict.values dict: Lista de valores
Dict.filter pred dict: Filtra según condición
Dict.union d1 d2: Une dos diccionarios
Dict.merge: Mezcla con control sobre conflictos
Dict en Elm es:
- Inmutable
- Ordenado por clave
- Seguro (usa `Maybe` para búsquedas)
- Funcional y expresivo
En Elm, un Dict es más que un mapa: es una garantía de orden, seguridad y pureza funcional.