整数を含むタプルのリストがあります。
[(123,123,123),(123,123,123),(123,123,123)]
リストの 2 番目の値すべての合計を取得したい。
[(_,123,_),(_,123,_),(_,123,_)]
123 + 123 + 123
フォールドを使用する必要があると思いますが、よくわかりません
タプル リストのリストから 2 番目の値を抽出して新しいリストを取得し、新しいリストを合計します。
Prelude> let a = [(123,123,123),(123,123,123),(123,123,123)]
Prelude> sum [i | (_,i,_) <- a]
あなたは正しい軌道に乗っていると思います。私はこれを試しましたが、うまくいくようです:
sumSecondTuple list = foldl (\acc (x, y, z) -> (+) y acc) 0 list
これは、値 0 から開始し、累積値を のすべてのアイテムy
のタプルの値に追加することを意味します。(x, y, z)
list
Control.Lens
レンズ (インポート)を恐れていない場合、 1 つの解決策は次のとおりです。
sumsnds = sum . toListOf (traverse . _2)
これにより、タプルのリストをトラバースして取得したリストの値が合計され、各タプルの2 番目の値が選択されます。