estilo aplicativo Functor:
import Control.Applicative
addLists xs ys = getZipList $ (+) <$> ZipList xs <*> ZipList ys
Tenga en cuenta que esto es tan feo, porque hay dos maneras de hacer una lista de Aplicativo Functor. La primera (y en mi humilde opinión menos útil) es tomar todas las combinaciones, y de esa manera se convirtió en el "estándar", por lo que (+) <$> [1,2] <*> [30,40]
es [31,41,32,42]
. La otra forma es comprimir las listas como necesitamos aquí, pero como solo puede tener una instancia de clase de tipo por tipo, debemos envolver las listas en ZipLists y desenvolver el resultado usando getZipList.
BTW: 'add = uncurry (+)'. También tenga en cuenta que la respuesta 'zipWith' es el primer hit en [Hoogle] (http://haskell.org/hoogle/) para la consulta [' (a -> b -> c) -> \ [a \] - > \ [b \] -> \ [c \] '] (http://haskell.org/hoogle/?hoogle=%28a+-%3E+b+-%3E+c%29+-%3E+%5Ba% 5D + -% 3E +% 5Bb% 5d + -% 3E +% 5Bc% 5D). – ephemient
Gracias efusivo, probaré con Hoogle la próxima vez. –
@TomMD, no entiendo la primera parte de su comentario. –