[Practico 1] [Ejercicio 7] Devolver un tipo algebraico

[Practico 1] [Ejercicio 7] Devolver un tipo algebraico

de Bruno Lartigau Antonini -
Número de respuestas: 2
Buenas, tengo la siguiente duda con el código que hice para el ej 7, parte b:


data Curso = Curso String Int Int

    deriving (Show, Eq)

data Estudiante = Estudiante String Int Int [Curso]

    deriving (Show, Eq)

data ParNomCI = ParNomCI String Int

    deriving (Show, Eq)


nomCI :: Estudiante->ParNomCI

nomCI (Estudiante nombre ci _ _) = (ParNomCI nombre ci)


Cuando llamo a nomCI en la consola, por ej: nomCI (Estudiante "Bruno" 1 2020 []), me devuelve: ParNomCI "Bruno" 1.

Mi duda es si es correcto que me devuelva el constructor además de los parámetros, y si no lo es, de que forma podría arreglarlo sin tener que usar tuplas como pide la letra.


Saludos.

En respuesta a Bruno Lartigau Antonini

Re: [Practico 1] [Ejercicio 7] Devolver un tipo algebraico

de Juan Pablo García Garland -

Sí, es correcto al evaluar imprima

ParNomCI "Bruno" 1

Esa es la forma que tienen los valores del tipo algebraico que definiste antes (hay un constructor de tipo String -> Int -> ParNoimCI). El mecanismo deriving Show genera una implementación para la clase Show que imprime los valores tal y como los construirías.