Haskell tiene la función sumaCubesumming en Haskell
sum :: Num a => [a] -> a
Cuál puede ser muy bien compuesta para resumir una matriz por
sum . map sum :: Num a => [[a]] -> a
Profundizando, sin embargo, como la suma de un cubo, crea la restricción Num [a]
sum . map sum . map sum :: (Num a, Num [a]) => [[[a]]] -> a
Que, si lo piensas bien, es natural. Entonces, con el intento anterior de definir la función sumcube explotando en la cara, necesitamos encontrar una ruta diferente. Uno de estos intentos sería:
sum . map sum . map (map sum) :: Num a => [[[a]]] -> a
Lo que no parece ser tan natural como la función summatrix.
En mi búsqueda de la posesión de herramientas mentales para la resolución de problemas en Haskell, estoy interesado en saber cómo abordar este problema de sumar una estructura de cualquier profundidad, por ejemplo, apilando map sum
como en mi tercer ejemplo de código. ¿Es esto posible? Y en ese caso, ¿cómo lo harías?
¿Usted intentó 'suma. mapa (suma del mapa) '? – fuz
sum. map (map sum) :: (Num [b], Num b) => [[[b]]] -> [b] –
Si está interesado en operaciones rápidas en matrices numéricas, probablemente debería usar vector, repa, hmatrix, o paquetes similares. –