Haskell ha la funzione di sommaCubesumming in haskell
sum :: Num a => [a] -> a
Quale può essere ben composto sommare una matrice da
sum . map sum :: Num a => [[a]] -> a
Andando più profondo, tuttavia, come somma di un cubo, crea la restrizione Num [a]
sum . map sum . map sum :: (Num a, Num [a]) => [[[a]]] -> a
Il che, se ci pensate, è naturale. Quindi, con il precedente tentativo di definire la funzione sumcube che esplode in faccia, dobbiamo trovare un percorso diverso. Uno di questi tentativi potrebbe essere:
sum . map sum . map (map sum) :: Num a => [[[a]]] -> a
Che non sembra naturale come la funzione di sommatore.
Nella mia ricerca per posessing degli strumenti mentali per la risoluzione dei problemi in Haskell, sono interessato a sapere come affrontare questo problema di sommare una struttura di qualsiasi profondità, ad esempio, impilando map sum
s come nel mio terzo esempio di codice. È possibile? E in tal caso, come lo faresti?
Hai provato 'somma. mappa (mappa somma) '? – fuz
somma. map (map sum) :: (Num [b], Num b) => [[[b]]] -> [b] –
Se sei interessato a operazioni veloci su matrici numeriche, dovresti probabilmente usare vector, repa, hmatrix o pacchetti simili. –