Aplicación de lista de funciones a lista de elementos
Definir la función
1 |
aplicaLista :: [a -> b] -> [a] -> [b] |
tal que (aplicaLista fs xs) es la lista de los valores de las funciones de fs
aplicadas a los correspondientes elementos de xs. Por ejemplo,
1 2 3 |
aplicaLista [(+2),(`div` 3),(*5)] [4,6,2] == [6,2,10] aplicaLista [(+2),(`div` 3),(*5)] [4,6,2,8] == [6,2,10] aplicaLista [(>2),(==3),(<5)] [4,6,2,9] == [True,False,True] |
Soluciones
1 2 3 4 5 6 7 8 9 10 11 12 13 |
-- 1ª definición (por comprensión) aplicaLista :: [a -> b] -> [a] -> [b] aplicaLista fs xs = [f x | (f,x) <- zip fs xs] -- 2ª definición (por recursión) aplicaLista2 :: [a -> b] -> [a] -> [b] aplicaLista2 (f:fs) (x:xs) = f x : aplicaLista2 fs xs aplicaLista2 _ _ = [] -- 3ª definición (por orden superior) aplicaLista3 :: [a -> b] -> [a] -> [b] aplicaLista3 = zipWith ($) |
3 Comentarios