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).

-- Afegir un element al principi
novaLlista = 0 : myList  -- Resultat: [0, 1, 2, 3, 4, 5]

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

  1. Crea una llista de nombres enters del 1 al 10.
  2. Accedeix al cinquè element de la llista.
  3. Afegeix el nombre 11 al final de la llista.
  4. 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

  1. Crea una tuple de tres elements: un nombre enter, una cadena de text i un valor booleà.
  2. Accedeix al segon element de la tuple.
  3. 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.

© Copyright 2024. Tots els drets reservats