introalg:taller07_4
Diferencias
Muestra las diferencias entre dos versiones de la página.
| Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previa | ||
| introalg:taller07_4 [2007/05/14 22:31] – nicolasw | introalg:taller07_4 [2025/11/15 13:47] (actual) – editor externo 127.0.0.1 | ||
|---|---|---|---|
| Línea 79: | Línea 79: | ||
| ===== Generalización de las funciones vistas (map, filter, fold) ===== | ===== Generalización de las funciones vistas (map, filter, fold) ===== | ||
| + | |||
| + | |||
| Línea 93: | Línea 95: | ||
| ?No estamos ya cansados de escribir siempre lo mismo? | ?No estamos ya cansados de escribir siempre lo mismo? | ||
| - | Veamos solo algunas de las funciones de //tipo aplicación//, | + | Las funciones de //tipo aplicación//, |
| < | < | ||
| Línea 102: | Línea 104: | ||
| < | < | ||
| - | veintePorCiento : [Float] -> [Float] | + | veintePorCiento |
| veintePorCiento [] = [] | veintePorCiento [] = [] | ||
| veintePorCiento (x:xs) = 0.2*x : veintePorCiento xs | veintePorCiento (x:xs) = 0.2*x : veintePorCiento xs | ||
| Línea 124: | Línea 126: | ||
| Entonces **generalizemos** definiendo una función que toma como primer argumento la función que se aplicará a cada elemento de la lista. | Entonces **generalizemos** definiendo una función que toma como primer argumento la función que se aplicará a cada elemento de la lista. | ||
| - | Esta función es la primera que crearemos donde utilizamos | + | Vemos nuevamente |
| - | Se dice que en Haskell las funciones son // | + | De nuevo, se dice que en Haskell las funciones son // |
| Esto no ocurre en la mayoría de los //lenguajes imperativos// | Esto no ocurre en la mayoría de los //lenguajes imperativos// | ||
| Línea 137: | Línea 139: | ||
| === Ejercicio === | === Ejercicio === | ||
| - | * Definir la función //mapNumero.f.xs//, //mapNumero | + | * Definir la función //mapNumeros.f.xs//, //mapNumeros |
| probar con mapNumeros.(*2).[0, | probar con mapNumeros.(*2).[0, | ||
| + | |||
| Línea 149: | Línea 152: | ||
| < | < | ||
| esPar :: Int -> Bool | esPar :: Int -> Bool | ||
| - | esPar x = x `mod` 2 == 0 | + | esPar = esDivisor |
| soloPares :: [Int] -> [Int] | soloPares :: [Int] -> [Int] | ||
| Línea 174: | Línea 177: | ||
| probar con filtraNumeros.entre0y9.[], | probar con filtraNumeros.entre0y9.[], | ||
| + | |||
| + | |||
| Línea 193: | Línea 198: | ||
| productoria :: [Int] -> Int | productoria :: [Int] -> Int | ||
| - | productoria [] | + | productoria [] |
| productoria (x:xs) = producto x (productoria xs) | productoria (x:xs) = producto x (productoria xs) | ||
| </ | </ | ||
| Línea 201: | Línea 206: | ||
| concatenaInt :: [[Int]] -> [Int] | concatenaInt :: [[Int]] -> [Int] | ||
| concatenaInt [] = [] | concatenaInt [] = [] | ||
| - | concatenaInt (xs:xss) = xs ++ concatenaInt xss | + | concatenaInt (xs:xss) = (++) xs (concatenaInt xss) |
| </ | </ | ||
| Línea 235: | Línea 240: | ||
| < | < | ||
| - | mapa : (a -> b) -> [a] -> [b] | + | mapa :: (a -> b) -> [a] -> [b] |
| mapa f [] = | mapa f [] = | ||
| mapa f (x:xs) = | mapa f (x:xs) = | ||
| Línea 301: | Línea 306: | ||
| ===== Reescribiendo funciones usando map, fold y filter ===== | ===== Reescribiendo funciones usando map, fold y filter ===== | ||
| + | |||
| + | |||
| + | |||
| ==== Ejercicios ==== | ==== Ejercicios ==== | ||
| * Escribir // | * Escribir // | ||
| + | * Reescribir ambas utilizando aplicación parcial sobre //mapa// para evitar escribir el argumento de la lista. | ||
| + | * Utilizando //mapa// escribir la función //largos :: [String] -> [Int]// que dada una lista de cadenas, retorna la lista con la longitud de cada una. | ||
| * Escribir // | * Escribir // | ||
| + | * Reescribir ambas utilizando aplicación parcial sobre //mapa// para evitar escribir el argumento de la lista. | ||
| + | * Escribir // | ||
| + | * Escribir // | ||
| * Escribir // | * Escribir // | ||
| * Escribir // | * Escribir // | ||
| * Escribir //reversa// usando // | * Escribir //reversa// usando // | ||
| - | * **DIFÍCIL** Escribir //mapa// y //filtro// usando // | + | * **(DIFÍCIL)** Escribir //mapa// y //filtro// usando // |
introalg/taller07_4.1179192706.txt.gz · Última modificación: (editor externo)
