En aquest tema, explorarem dos tipus de dades fonamentals en Haskell: les llistes i les tuples. Aquests tipus de dades són essencials per a la manipulació de col·leccions d'elements i per a l'emmagatzematge de múltiples valors en una sola estructura.
Llistes
Què és una Llista?
Una llista en Haskell és una col·lecció ordenada d'elements del mateix tipus. Les llistes són homogeneïnes, el que significa que tots els elements d'una llista han de ser del mateix tipus.
Creació de Llistes
Les llistes es defineixen utilitzant claudàtors []
i els elements es separen per comes.
-- Llista de nombres enters myList :: [Int] myList = [1, 2, 3, 4, 5] -- Llista de cadenes de text myStringList :: [String] myStringList = ["Hola", "Món", "Haskell"]
Operacions Bàsiques amb Llistes
Accés a Elements
Pots accedir als elements d'una llista utilitzant l'operador !!
.
-- Accedir al primer element primerElement = myList !! 0 -- Resultat: 1 -- Accedir al tercer element tercerElement = myList !! 2 -- Resultat: 3
Concatenació de Llistes
Pots concatenar dues llistes utilitzant l'operador ++
.
-- Concatenar dues llistes llistaConcatenada = myList ++ [6, 7, 8] -- Resultat: [1, 2, 3, 4, 5, 6, 7, 8]
Afegir un Element al Principi
Pots afegir un element al principi d'una llista utilitzant l'operador :
(cons).
Funcions Comunes per a Llistes
Haskell proporciona moltes funcions predefinides per treballar amb llistes. Aquí en tens algunes de les més comunes:
Funció | Descripció | Exemple |
---|---|---|
head |
Retorna el primer element d'una llista | head [1, 2, 3] -> 1 |
tail |
Retorna la llista sense el primer element | tail [1, 2, 3] -> [2, 3] |
length |
Retorna la longitud de la llista | length [1, 2, 3] -> 3 |
null |
Comprova si la llista està buida | null [] -> True |
reverse |
Retorna la llista en ordre invers | reverse [1, 2, 3] -> [3, 2, 1] |
Tuples
Què és una Tuple?
Una tuple és una col·lecció d'elements que poden ser de diferents tipus. Les tuples són heterogènies, el que significa que els elements poden ser de tipus diferents.
Creació de Tuples
Les tuples es defineixen utilitzant parèntesis ()
i els elements es separen per comes.
-- Tuple de dos elements myTuple :: (Int, String) myTuple = (1, "Hola") -- Tuple de tres elements myTriple :: (Int, String, Bool) myTriple = (1, "Hola", True)
Accés a Elements de Tuples
Pots accedir als elements d'una tuple utilitzant patrons de coincidència (pattern matching).
-- Accés als elements d'una tuple primerElementTuple = fst myTuple -- Resultat: 1 segonElementTuple = snd myTuple -- Resultat: "Hola" -- Accés als elements d'una tuple de tres elements (a, b, c) = myTriple -- a = 1, b = "Hola", c = True
Funcions Comunes per a Tuples
Haskell proporciona algunes funcions predefinides per treballar amb tuples. Aquí en tens algunes de les més comunes:
Funció | Descripció | Exemple |
---|---|---|
fst |
Retorna el primer element d'una tuple de dos elements | fst (1, "Hola") -> 1 |
snd |
Retorna el segon element d'una tuple de dos elements | snd (1, "Hola") -> "Hola" |
Exercicis Pràctics
Exercici 1: Creació i Manipulació de Llistes
- Crea una llista de nombres enters del 1 al 10.
- Accedeix al cinquè element de la llista.
- Afegeix el nombre 11 al final de la llista.
- Inverteix la llista.
Solució
-- 1. Crear una llista de nombres enters del 1 al 10 llistaNumeros :: [Int] llistaNumeros = [1..10] -- 2. Accedir al cinquè element de la llista cinqueElement = llistaNumeros !! 4 -- Resultat: 5 -- 3. Afegir el nombre 11 al final de la llista llistaAmbOnze = llistaNumeros ++ [11] -- Resultat: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] -- 4. Invertir la llista llistaInvertida = reverse llistaNumeros -- Resultat: [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
Exercici 2: Creació i Manipulació de Tuples
- Crea una tuple de tres elements: un nombre enter, una cadena de text i un valor booleà.
- Accedeix al segon element de la tuple.
- Crea una funció que intercanviï els elements d'una tuple de dos elements.
Solució
-- 1. Crear una tuple de tres elements mevaTuple :: (Int, String, Bool) mevaTuple = (42, "Haskell", True) -- 2. Accedir al segon element de la tuple segonElement = let (_, x, _) = mevaTuple in x -- Resultat: "Haskell" -- 3. Crear una funció que intercanviï els elements d'una tuple de dos elements intercanviar :: (a, b) -> (b, a) intercanviar (x, y) = (y, x) -- Exemple d'ús de la funció intercanviar tupleIntercanviada = intercanviar (1, "Hola") -- Resultat: ("Hola", 1)
Conclusió
En aquesta secció, hem après sobre les llistes i les tuples en Haskell, incloent com crear-les, accedir als seus elements i utilitzar algunes de les funcions predefinides més comunes. Les llistes són útils per a col·leccions d'elements del mateix tipus, mentre que les tuples són útils per agrupar elements de diferents tipus. Amb aquests coneixements, estàs preparat per manipular col·leccions de dades de manera eficient en Haskell.