リスト内の要素の合計を同じ位置に配置するにはどうすればよいですか?例えば:
[[2,3,4],[5,6,7],[8,9,10]]=[15,18,21]
ありがとう
試す:
sumIn :: Num a => [[a]] -> [a]
sumIn = foldl (zipWith (+)) (repeat 0)
引数が空のリストの場合、結果はゼロの無限のリストになることに注意してください。したがって、たとえば、このケースを個別に処理することをお勧めします。
sumIn :: Num a => [[a]] -> [a]
sumIn [] = []
sumIn xs = foldl (zipWith (+)) (repeat 0) xs
リストを転置して、結果の各リストを合計することができます。
ghci> import Data.List (transpose)
ghci> map sum $ transpose [[2,3,4],[5,6,7],[8,9,10]]
[15,18,21]
他のソリューションとは異なり、これは不均一な長さのリストに対して機能します。
GHCiの例を次に示します。
λ> let xs = [[2,3,4],[5,6,7],[8,9,10]]
λ> foldr1 (zipWith (+)) xs
[15,18,21]