Els sinònims de tipus en Haskell permeten donar noms alternatius a tipus existents, fent el codi més llegible i mantenible. Aquesta característica és especialment útil quan es treballa amb tipus complexos o quan es vol donar un significat més clar a un tipus.

Definició de Sinònims de Tipus

Un sinònim de tipus es defineix utilitzant la paraula clau type. La sintaxi bàsica és la següent:

type NouNom = TipusExistents

Exemple Bàsic

Suposem que tenim un tipus String que representa el nom d'una persona. Podem crear un sinònim de tipus per fer el codi més llegible:

type Nom = String

saluda :: Nom -> String
saluda nom = "Hola, " ++ nom ++ "!"

En aquest exemple, Nom és un sinònim de String. La funció saluda pren un Nom com a argument i retorna una salutació.

Avantatges dels Sinònims de Tipus

  1. Millora de la Llegibilitat: Els sinònims de tipus poden fer que el codi sigui més fàcil de llegir i entendre.
  2. Mantenibilitat: Si el tipus subjacent canvia, només cal actualitzar la definició del sinònim de tipus.
  3. Documentació: Els sinònims de tipus poden servir com a documentació, indicant la intenció del tipus.

Sinònims de Tipus Complexos

Els sinònims de tipus també poden ser utilitzats per simplificar tipus complexos. Per exemple, considerem un tipus que representa una llista de parells de coordenades:

type Coordenada = (Int, Int)
type Ruta = [Coordenada]

rutaExemple :: Ruta
rutaExemple = [(0, 0), (1, 2), (3, 4)]

En aquest cas, Coordenada és un sinònim per a un parell d'enters (Int, Int), i Ruta és un sinònim per a una llista de Coordenada.

Sinònims de Tipus Parametritzats

Els sinònims de tipus també poden ser parametritzats, de manera similar a les funcions genèriques. Per exemple:

type Parell a = (a, a)

parellEnter :: Parell Int
parellEnter = (1, 2)

parellString :: Parell String
parellString = ("Hola", "Món")

En aquest exemple, Parell és un sinònim de tipus parametritzat que pot ser utilitzat amb qualsevol tipus.

Exercicis Pràctics

Exercici 1

Defineix un sinònim de tipus Punt3D que representi un punt en un espai tridimensional utilitzant un tuple de tres Float.

type Punt3D = (Float, Float, Float)

distanciaOrigen :: Punt3D -> Float
distanciaOrigen (x, y, z) = sqrt (x^2 + y^2 + z^2)

Exercici 2

Defineix un sinònim de tipus NomComplet que representi un tuple de dos String (nom i cognom). Escriu una funció nomComplet que prengui un NomComplet i retorni una cadena amb el nom complet.

type NomComplet = (String, String)

nomComplet :: NomComplet -> String
nomComplet (nom, cognom) = nom ++ " " ++ cognom

Resum

Els sinònims de tipus en Haskell són una eina poderosa per millorar la llegibilitat i mantenibilitat del codi. Permeten donar noms significatius a tipus existents, simplificar tipus complexos i documentar la intenció del codi. Utilitzant sinònims de tipus, podem escriure codi més clar i fàcil de mantenir.

© Copyright 2024. Tots els drets reservats