Translate

miércoles, 8 de octubre de 2025

Dict en Elm: Diccionarios funcionales para datos ordenados


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.