-2

整数を含むタプルのリストがあります。

[(123,123,123),(123,123,123),(123,123,123)]

リストの 2 番目の値すべての合計を取得したい。

[(_,123,_),(_,123,_),(_,123,_)]

123 + 123 + 123

フォールドを使用する必要があると思いますが、よくわかりません

4

3 に答える 3

5

タプル リストのリストから 2 番目の値を抽出して新しいリストを取得し、新しいリストを合計します。

Prelude> let a = [(123,123,123),(123,123,123),(123,123,123)]
Prelude> sum [i | (_,i,_) <- a]
于 2013-10-07T04:58:45.383 に答える
1

あなたは正しい軌道に乗っていると思います。私はこれを試しましたが、うまくいくようです:

sumSecondTuple list = foldl (\acc (x, y, z) -> (+) y acc) 0 list

これは、値 0 から開始し、累積値を のすべてのアイテムyのタプルの値に追加することを意味します。(x, y, z)list

于 2013-10-07T02:16:34.117 に答える
0

Control.Lensレンズ (インポート)を恐れていない場合、 1 つの解決策は次のとおりです。

sumsnds = sum . toListOf (traverse . _2)

これにより、タプルのリストをトラバースして取得したリストの値が合計され、各タプルの2 番目の値が選択されます。

于 2013-10-07T12:18:48.107 に答える