나는 intergers를 포함하는 튜플 목록을 가지고 있습니다.튜플 목록 합계
[(123,123,123),(123,123,123),(123,123,123)]
예를 들어 목록의 모든 두 번째 값의 합계를 얻고 싶습니다.
[(_,123,_),(_,123,_),(_,123,_)]
123 + 123 + 123
나는 내가 배를 사용하지만 확인
나는 intergers를 포함하는 튜플 목록을 가지고 있습니다.튜플 목록 합계
[(123,123,123),(123,123,123),(123,123,123)]
예를 들어 목록의 모든 두 번째 값의 합계를 얻고 싶습니다.
[(_,123,_),(_,123,_),(_,123,_)]
123 + 123 + 123
나는 내가 배를 사용하지만 확인
튜플 목록의 두 번째 값을 추출하여 새 목록을 얻은 다음 새 목록을 합산하십시오.
Prelude> let a = [(123,123,123),(123,123,123),(123,123,123)]
Prelude> sum [i | (_,i,_) <- a]
메신저해야한다고 생각 난 당신이 올바른 궤도에 있다고 생각. 나는 이것을 시도하고 작동하는 것 같다 :
이 0의 값으로 시작 말한다sumSecondTuple list = foldl (\acc (x, y, z) -> (+) y acc) 0 list
는 다음 list
의 모든 항목에 대한 튜플 (x, y, z)
에 y
값으로 누적 값을 추가합니다.
당신이 (Control.Lens
가져 오기) 렌즈를 하나 개의 솔루션을 두려워하지 않은 경우는이 목록의 합 값은 당신이 때 의 목록 통과 얻을 것이다
sumsnds = sum . toListOf (traverse . _2)
입니다 튜플을 선택하고 각 터플에 두 번째 값을 선택하십시오.
익명 함수의 값은 얼마입니까? – user972183
누적 기입니다. 'foldl'을 사용하면, 어떤 값으로 시작하여 누적 합계를 유지합니다. 이 경우 0부터 시작합니다 (함수 선언에서 볼 수있는 0입니다). 각 단계에서 지금까지 누적 된 값과 목록의 다음 요소를 매개 변수로 사용하여 익명의 함수를 호출합니다. 따라서 'acc'는 지금까지 누적 된 값입니다. – user1118321