data Tree a = Tip Node a (Tree a) (Tree a) deriving Show



Documentos relacionados
Tema 11. Listas infinitas

Programación Funcional

Programación Funcional en Haskell

SOLUCIONES A EJERCICIOS

Programación Declarativa Haskell Informática Sistemas Curso Pepe Gallardo Universidad de Málaga. Tema 8. Listas

Tema 13: Programas interactivos

Programación declarativa ( )

EJERCICIOS DE LENGUAJES Y PARADIGMAS DE PROGRAMACIÓN (CUESTIONES DE EXAMEN) PROGRAMACIÓN FUNCIONAL

Práctica N o 1 - Programación Funcional

Informática Haskell Matemáticas Curso Pepe Gallardo Universidad de Málaga. Tema 8. Listas

Exámenes de Programación funcional con Haskell ( )

Introducción. Haskell

Tipos en Haskell. Cecilia Manzino

Ejercicios de programación funcional con Haskell

Tema 1. Tema 2. Informática Haskell Matemáticas Curso Pepe Gallardo Universidad de Málaga

Tema 23: Técnicas de diseño descendente de algoritmos

Programación Declarativa Haskell Informática Sistemas Curso Pepe Gallardo Universidad de Málaga

Ejercicios de programación funcional con Haskell

Tema 21: Algoritmos de exploración de grafos

Tema 9: Declaraciones de tipos y clases

Tema 6: Funciones recursivas

Tema 8: Funciones de orden superior

Tema 8: Funciones de orden superior

Secuencias. Mauro Jaskelioff 18/05/2015

El sistema de clases de Haskell. Introducción

Tema 7. El sistema de clases

Estructuras de Datos. Dr. Pablo E. Fidel Martínez López Lic. en Ciencias de la Computación UNR

Programación Declarativa UNIVERSIDAD DE MÁLAGA

ALPII Práctica 3. Bernardo García Fuentes

Lógica y Programación

Tema 2: Introducción a la programación con Haskell

Tema Árboles binarios fmap para árboles binarios Plegado de árboles binarios

Tecnólogo Informático- Estructuras de Datos y Algoritmos- 2009

Introducción a la Programación Genérica

Introducción a Haskell. Cecilia Manzino

Para entender la recursividad primero tenemos que entender la recursividad

Tema 5: Definiciones de listas por comprensión

Tema 5: Definiciones de listas por comprensión

Estructuras de Datos. Dr. Pablo E. Fidel Martínez López Lic. en Ciencias de la Computación UNR

Tema 4: Definición de funciones

Guía 2: Listas, recursión e inducción

Tema 4: Definición de funciones

Tema 13: Aplicaciones de programación funcional

Isabelle como un lenguaje funcional

Ejemplos de conversión de reales a enteros

Paradigmas de Programación

Listas y Recursión. Taller de Álgebra I. Primer Cuatrimestre de 2015

Programación Funcional

Guía 2: Funciones, listas, recursión e inducción

1.1 Define un operador ( ) que devuelva True si y solo si tan solo uno de sus argumentos es True. Por ejemplo:? (3 > 2) (2 > 5)

n! = 1 2 n 0! = 1 (n+1)! = (n + 1) n!

Tema 12: Programas interactivos

3.- DETERMINANTES. a 11 a 22 a 12 a 21

Tesis de Maestría en Informática

SOLUCIONES A LOS EJERCICIOS DE EXÁMENES

XML y XQuery. Qué es XML? Qué es XML? (II) Ejemplo de fichero XML. Cuerpo de un documento XML. Estructura de un documento XML

Escuela Politécnica Superior de Ingeniería Departamento de Ingeniería Informática

Árboles generales. Un árbol es una estructura no lineal acíclica utilizada para organizar información de forma eficiente. La definición es recursiva:

Nota 2. Luis Sierra. Marzo del 2010

Examen final de CL 11 de Enero de 2012 Fecha de publicación de notas: Fecha de revisión:

Ejercicios de Funciones, límites y continuidad.

Tema Árboles generales. 9.2 Árboles binarios 9.3 Árboles de búsqueda

También añado a la clase Libro los siguientes métodos: (que programaré más adelante)

Valores Booleanos Interpretación #t Cierto #f Falso

Curso 0 de Informática

Tema 3: Tipos y clases

Temas de Programación funcional (curso )

Temas de Programación funcional (curso )

Temas de Programación declarativa ( ) José A. Alonso Jiménez

Tema 3: Tipos y clases

Tema 3: Tipos y clases

Práctico 5. Definiciones Inductivas - Segunda Parte -

PARADIGMAS DE LENGUAJES DE PROGRAMACIÓN. Programación Funcional. Pablo E. Fidel Martínez López

Tema II: Introducción al Lenguaje Funcional

Ejercicios de Informática de 1 o de Matemáticas ( )

Programación Funcional Haskell Clase 21

Introducción a OCaml. October 19, 2015

Ejercicios de Informática de 1º de Matemáticas ( ) José A. Alonso Jiménez

Programación Funcional

OPERADORES LÓGICOS Y DE COMPARACIÓN EN PHP. PRIORIDADES. EJEMPLOS. EJERCICIOS RESUELTOS. (CU00818B)

Árboles. Cursos Propedéuticos Dr. René Cumplido M. en C. Luis Rodríguez Flores

Programación declarativa ( )

Estructuras de repetición hacer-mientras y repita hasta

Transcripción:

Preguntas seleccionadas de pruebas de evaluación Pregunta 1 Dadas las siguientes definiciones: data Tree a = Tip Node a (Tree a) (Tree a) deriving Show cambiar :: [Int] -> Tree [Int] -> Tree [Int] cambiar _ Tip = Tip cambiar [] (Node xs t1 t2) = Node (reverse xs) (cambiar [] t1) (cambiar [] t2) cambiar (x:xs) (Node ys t1 t2) = Node (x:xs) (cambiar (x:xs) t2) (cambiar (x:xs) t1) La evaluación de la expresión: cambiar [1,2,3] (Node [-1,-2,-3] (Node [0] Tip Tip) (Node [4,8] Tip Tip)) da como resultado: Pregunta 2 Sea la expresión: a) Node [0] (Node [1,2,3] Tip Tip) (Node [1,2,3] Tip Tip) b) Node [1,2,3] (Node [1,2,3] Tip Tip) (Node [1,2,3] Tip Tip) c) Node [3,2,1] (Node [3,2,1] Tip Tip) (Node [3,2,1] Tip Tip) d) Node [] (Node [] Tip Tip) (Node [] Tip Tip) tata = map (mod 0) [1,2,0,7,8] Indique cuáles de las siguientes expresiones produce un error al ser evaluada Pregunta 3 a) last tata b) head tata c) foldl (*) 3 tata d) length tata Sea la siguiente definición lolo g x = ys where ys = [x] ++ filter (curry g x) ys El tipo de la función lolo es: a) (a,b) -> Bool -> b -> [(a,b)] b) (b -> b -> b) -> Bool -> [b] c) ((b,b) -> Bool) -> b -> [b] d) (a -> b -> Bool) -> b -> [c] Pregunta 4 La expresión take 5 (lolo (uncurry (==)) 1) da como resultado: a) [] b) [(1,1), (1,1), (1,1), (1,1), (1,1)] c) [1, 1, 1, 1, 1] d) [((((1,1), 1), 1), 1)]

Pregunta 5 Considere las siguientes expresiones: i) (foldr (.)) ii) ((.) foldr) iii) (foldr. (.)) iv) ((.). foldr) Indique cuál de las siguientes afirmaciones es correcta: Pregunta 6 a) (ii) no tiene tipo y todas las otras sí. b) (iii) y (iv) tienen tipo y las otra no. c) Ninguna de las expresiones tiene tipo. d) Todas las expresiones tienen tipo. Se consideran las siguientes expresiones: a) (flip.) b) (. flip) c) (.) flip d) (.) $ flip e) flip $ (.) Indique cuál de las siguientes afirmaciones es correcta: a) Las expresiones b) y c) tienen el mismo tipo b) Las expresiones c) y d) tienen el mismo tipo c) La expresión d) no tiene tipo d) Las expresiones e) y a) tienen el mismo tipo Pregunta 7 Sea la expresión foldl ope 0 [5,7,3] where ope n x = 10 * n + x Cual de las siguientes afirmaciones acerca de la evaluación de la expresión es correcta? Pregunta 8 a) el resultado es el mismo si cambiamos foldl por foldr b) el resultado es [5,7,3] c) el resultado es [3,7,5] d) el resultado es 573 Dada la siguiente definición, indique cuál de las siguientes afirmaciones es correcta: fibs ::[Int] fibs = 0 : 1 : zipwith (+) fibs (tail fibs) a) fibs define una lista finita b) La evaluación de fibs produce un error de tipo c) fibs define la lista de los números de Fibonacci d) fibs define una lista infinita de números impares

Pregunta 9 Sea la siguiente definición de función: pepe _ [] = [] pepe y (x:xs) y == x = xs' otherwise = y:xs' where xs' = pepe y xs El tipo más general para esta función es: Pregunta 10 a) (Eq a) => a -> [a] -> [a] b) Int -> [Int] -> [Int] c) (Eq a, Eq b) => b -> [a] -> [a] d) (Ord a) => a -> [a] -> [a] Indique cuál de las siguientes expresiones no tiene tipo (la función pepe está definida en la pregunta 9): Pregunta 11 a) (pepe "hola") b) (pepe "hola" "chau") c) (pepe. head) d) (map. pepe) Indique cuál de las siguientes afirmaciones es correcta (la función pepe está definida en la pregunta 9) Pregunta 12 a) (pepe 'a' "hol")>>> da como resultado "hola" b) (pepe 1 [1,1,1,1])>>> da el mismo resultado que pepe 1 [1] c) (pepe 1 [1,2])>>> da como resultado [] d) (pepe 1 [2])>>> da como resultado [2] Considere la siguiente definición: foo :: (Num a) => Int -> a -> a foo 0 = constante 1 foo (n+1) = combinar (*) (foo n) constante x _ = x combinar f g x = f x (g x) El resultado de la evaluación de (foo 4 2) es a) 16 b) 4 c) 2 d) 8

Pregunta 13 Sea la siguiente definición: cc xs ys = [ x x <- xs, y <- ys, x <= y] Indicar cuál es el resultado de evaluar la expresión: let us = [1,1] in cc us us a) [] b) [1,1,1] c) [1,1,1,1] d) [1,1] Pregunta 14 Sea la siguiente definición: f xs = [i i <- xs, (i,j) <- map (\y -> (i,y)) xs, i > j] Cual es el resultado de evaluar f [1,2,3]? Pregunta 15 a) [2,3] b) [2,3,3] c) [3,3,3] d) [1,2,3] Dada la expresión e = (foldr (++). map (:)) [1,2,3] [[filter even]] Cuál de las siguientes afirmaciones es correcta: a) e no tiene tipo b) head e [5,6] es [6] c) el tipo de e es [[Integer]] -> [[Integer]] d) head e [] es [[]] Pregunta 16 Sea la definición posi a l l1 /= [] = Just (head l1) otherwise = Nothing where l1 = [i (i,j) <- zip [0.. (length l)] l, j == a] Indique el tipo más general de posi: a) Maybe Int -> [Int] -> Maybe Int b) (Eq a) => a -> [a] -> Maybe Int c) (Eq a) => a -> [a] -> Maybe a d) Maybe a -> [Maybe a] -> Maybe Int

Pregunta 17 Dada la expresión zipwith. uncurry, cuál de las siguientes afirmaciones es correcta? a) el tipo de la expresión es [a -> b -> c] -> [(a,b)] -> [c] b) el tipo de la expresión es (a -> b -> c -> d) -> [(a,b)] -> [c] -> [d] c) la expresión no tiene tipo d) el tipo de la expresión es (a -> b -> c) -> ([a],[b]) -> [c] Pregunta 18 Pregunta 19 Se considera la siguiente definición de árboles data Rose a = Fork a [Rose a] Se quiere definir la función member, que verifica si un elemento aparece en un árbol member :: Eq a => a -> Rose a -> Bool Indique cuál de las siguientes definiciones de member es correcta: a) member a (Fork r ts) = if a == r then True else elem r ts b) member a (Fork r ts) = a == r map (==a) ts c) member a (Fork r ts) = r == a any (member a) ts d) member a (Fork r ts) = if a==r then True else member a ts Sea la siguiente expresión: (!!) (scanl mod 1 [0..4]) 1 Cuál de las siguientes afirmaciones es correcta? Pregunta 20 a) la evaluación de la expresión produce un error b) la evaluación de la expresión da como resultado 0 c) la expresión no tiene tipo d) la evaluación de la expresión da como resultado 1 Sea la siguiente definición: f xss = \a -> let ope x y = x ++ [a] ++ y in foldr1 ope xss Cuál es el resultado de evaluar f [[1,3],[2,4], [0,9,8]] 5? a) [[1,5,3], [2,5,4],[0,5,9,5,8]] b) [[1,3],[5],[2,4],[5], [0,9,8]] c) [1,3,5,2,4,5,0,9,8] d) [[1,3,5,2,4,5,0,9,8]]

Pregunta 21 Dadas las siguientes definiciones: data Nat = Cero Suc Nat instance Show Nat where show Cero = "0" show (Suc Cero) = "1" show (Suc n) = "1 + " ++ (show n) ++ "\n" suma :: Nat -> Nat-> Nat suma Cero n = n suma (Suc n) m = Suc (suma n m) Cuál de las siguientes afirmaciones es correcta? a) el tipo de suma debe ser (Show Nat) => Nat -> Nat-> Nat b) las definiciones son correctas c) en la declaración del tipo falta deriving Show d) el tipo de suma debe ser (Num Nat) => Nat -> Nat-> Nat