En Elm, las listas son una de las estructuras de datos más utilizadas. Son colecciones inmutables de elementos del mismo tipo, y ofrecen muchas funciones para trabajar con ellas de forma segura y declarativa.
Podés crear una lista escribiendo los elementos entre corchetes [] separados por comas:
numeros : List Int
numeros = [1, 2, 3, 4, 5]
palabras : List String
palabras = ["hola", "elm", "listas"]
Una lista vacía se define como:
vacia : List Int
vacia = []
Acceder al primer elemento
List.head [1,2,3] -- Just 1
Acceder al resto de la lista
List.tail [1,2,3] -- Just [2,3]
Largo de la lista
List.length [1,2,3] -- 3
Concatenar listas
[1,2] ++ [3,4] -- [1,2,3,4]
Aplica una función a cada elemento:
List.map (\x -> x * 2) [1,2,3] -- [2,4,6]
Filtra elementos que cumplen una condición:
List.filter (\x -> x > 2) [1,2,3,4] -- [3,4]
Reduce una lista a un único valor:
List.foldl (+) 0 [1,2,3,4] -- 10
Elm ofrece el operador :: para construir listas agregando un elemento al inicio:
1 :: [2,3,4] -- [1,2,3,4]
"hola" :: ["elm", "listas"] -- ["hola","elm","listas"]
Ejemplo completo :
numeros : List Int
numeros = [1, 2, 3, 4, 5]
pares : List Int
pares = List.filter (\n -> modBy 2 n == 0) numeros
cuadrados : List Int
cuadrados = List.map (\n -> n * n)
main =
Debug.log "Pares" pares
|> Debug.log "Cuadrados" cuadrados
Las listas en Elm son poderosas, seguras y fáciles de manipular gracias a la librería estándar. Una vez que domines map, filter y fold, vas a poder expresar la mayoría de las transformaciones sobre colecciones de forma clara y concisa.