0
The type of function map is
map :: (a -> b) -> [a] -> [b]
i and.., map is a function receives as parameters a function (from a for b) and a type list a and returns a type list b.
Knowing this, it is easy to understand the reason for the error message. In your second application, map takes fewer arguments/parameters than expected (map is Applied to Too few Arguments).
Let’s first remove the second application from the function map and see the partial result.
Be it l the list [[1, 4], [2, 3]], the result of map sum l is
[5, 5]
Thus, we were able to create a list in which each element results from the sum of the elements of the sub-lists. What we need now is not to apply the map function for the second time, but only a function that receives a list and returns the sum of all its elements: the function sum
Put it all together, one possible implementation would be:
gastoEmpresa :: [[Float]] -> Float
gastoEmpresa l = sum ( map sum l )
Or in the pointfree style:
gastoEmpresa :: [[Float]] -> Float
gastoEmpresa = sum . map sum
