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/15 01:47] – nicolasw | introalg:taller07_4 [2018/08/10 03:03] (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 ===== | ||
+ | |||
Línea 311: | Línea 317: | ||
* Escribir // | * Escribir // | ||
* Reescribir ambas utilizando aplicación parcial sobre //mapa// para evitar escribir el argumento de la lista. | * Reescribir ambas utilizando aplicación parcial sobre //mapa// para evitar escribir el argumento de la lista. | ||
+ | * Escribir // | ||
* Escribir // | * Escribir // | ||
* Escribir // | * Escribir // |
introalg/taller07_4.1179193636.txt.gz · Última modificación: 2018/08/10 03:03 (editor externo)