Está en la página 1de 2

INSTITUTO TECNOLÓGICO DE ZACATEPEC

INGENIERÍA EN SISTEMAS COMPUTACIONALES


Programación Lógica y Funcional
Práctica No. 7 “Ejercicios en Haskell”

Generar el código en Haskell para resolver las siguientes situaciones.

La base de datos sobre actividades de personas pueden representarse mediante listas


de elementos de la forma (a, b, c, d), donde a es el nombre de la persona, b su actividad,
c su fecha de nacimiento y d la de su fallecimiento. Un ejemplo es la siguiente que
usaremos a lo largo de los siguientes ejercicios.
personas :: [(String,String,Int,Int)]
personas = [("Cervantes","Literatura",1547,1616),
("Velazquez","Pintura",1599,1660),
("Picasso","Pintura",1881,1973),
("Beethoven","Musica",1770,1823),
("Poincare","Ciencia",1854,1912),
("Quevedo","Literatura",1580,1654),
("Goya","Pintura",1746,1828),
("Einstein","Ciencia",1879,1955),
("Mozart","Musica",1756,1791),
("Botticelli","Pintura",1445,1510),
("Borromini","Arquitectura",1599,1667),
("Bach","Musica",1685,1750)]

1. Definir la función nombres tal que (nombres bd) es la lista de los nombres de las
personas de la base de datos bd. Por ejemplo:
ghci> nombres personas
["Cervantes","Velazquez","Picasso","Beethoven","Poincare",
"Quevedo","Goya","Einstein","Mozart","Botticelli","Borromini","Bach"]

2. Definir la función musicos tal que (musicos bd) es la lista de los nombres de los
músicos de la base de datos bd. Por ejemplo:
ghci> musicos personas
["Beethoven","Mozart","Bach"]

3. Definir la función seleccion tal que (seleccion bd m) es la lista de los nombres de las
personas de la base de datos bd cuya actividad es m. Por ejemplo:
ghci> seleccion personas "Pintura"
["Velazquez","Picasso","Goya","Botticelli"]

4. Definir, usando el apartado anterior, la función musicos' tal que (musicos' bd) es la
lista de los nombres de los músicos de la base de datos bd. Por ejemplo:
ghci> musicos' personas
["Beethoven","Mozart","Bach"]

5. Definir la función vivas tal que (vivas bd a) es la lista de los nombres de las personas
de la base de datos bd que estaban vivas en el año a. Por ejemplo:
ghci> vivas personas 1600
["Cervantes","Velazquez","Quevedo","Borromini"]
6. Definir por recursión la función
potencia :: Integer -> Integer -> Integer
tal que (potencia x n) es x elevado al número natural n. Por ejemplo:
potencia 2 3 == 8

7. Definir por recursión la función


replicate' :: Int -> a -> [a]
tal que (replicate' n x) es la lista formado por n copias del elemento x. Por ejemplo:
replicate' 3 2 == [2,2,2]

8. Definir por recursión la función


elem' :: Eq a => a -> [a] -> Bool
tal que (elem' x xs) se verifica si x pertenece a la lista xs. Por ejemplo:
elem' 3 [2,3,5] == True
elem' 4 [2,3,5] == False

9. Definir por recursión la función


last' :: [a] -> a
tal que (last xs) es el último elemento de xs. Por ejemplo:
last' [2,3,5] => 5

10. Definir por recursión la función


concat' :: [[a]] -> [a]
tal que (concat' xss) es la lista obtenida concatenando las listas de xss. Por ejemplo:
concat' [[1..3],[5..7],[8..10]] == [1,2,3,5,6,7,8,9,10]

También podría gustarte