Haskell Hero
Haskell Hero es un manual interactivo del lenguaje Haskell para principiantes.
|
La aplicación parcial
<= Funciones aplicadas a listas III lección anterior
lección siguiente Programamos una calculadora =>
EmpezamosEn una de las primeras lecciones hemos hablado sobre la aridad de funciones. Hemos dicho que tenemos funciones unarias, binarias, ternarias, etc. Ahora mostramos que la aridad la podremos ver también de una manera diferente.
Tengamos una función ternaria general
Sin embargo, ¿qué pasa si la llamamos solo con un parámetro? Se convierte de una función ternaria a una función binaria
¿Qué pasa si llamamos la función binaria
Y por fin, ¿qué pasa si llamamos la función unaria
Si escribimos esta expresión en Hugs, la pone entre paréntesis como Ejemplo con (+)
La función (+) representada por una caja
¿Qué pasa si la llamamos con un solo parámetro, por ejemplo con La función (5+) representada por una caja
((+) 5) 3 ~> 5 + 3 ~> 8 ((+) 5) 4 ~> 5 + 4 ~> 9 ((+) 5) 6 ~> 5 + 6 ~> 11La función ((+) 5) la podemos escribir en la notación infija como (5+) igual que podemos escribir (div 4) como (4 `div`) .
Ya que la adición es conmutativa, da igual si escribimos (2^) 5 ~>* 32 (^2) 5 ~>* 25 Ejemplo con zipWith
Hemos dicho que la función
¿Qué pasa si aplicamos la función
¿Qué pasa si aplicamos la función
zipWith :: (a -> b -> c) -> [a] -> [b] -> [c] zipWith (++) :: [[a]] -> [[a]] -> [[a]] zipWith (++) [[1,2], [3,4,5]] :: [[Integer]] -> [[Integer]] zipWith (++) [[1,2], [3,4,5]] [[10,11,12], [13,14]] :: [[Integer]]La última expresión se evalúa de manera siguiente: zipWith (++) [[1,2], [3,4,5]] [[10,11,12], [13,14]] ~>* [[1,2] ++ [10,11,12], [3,4,5] ++ [13,14]] ~>* [ [1,2,10,11,12] , [3,4,5,13,14] ] |