튜플 목록이 있으며 튜플의 두 번째 요소를 기반으로 최대 값을 선택하려고합니다.
두 번째 요소를 기준으로 비교할 수있는 사용자 지정 비교기와 함께 maximumBy
함수를 사용해야합니다. 여기
import Data.Function (on)
import Data.List (maximumBy)
main = print $ fst (maximumBy (compare `on` snd) [(1, 5), (2, 1)])
-- 1
,
maximumBy
는에 사용될 실제 값을 얻기 위해, 우리는 첫 번째 파라미터로 전달 된 비교 함수 snd)
에 (compare
을 튜플리스트에서 각각의 모든 터플을 취하고 호출 비교.
우리는 snd
함수를 사용하여 비교를 위해 튜플의 두 번째 요소 만 가져옵니다. 따라서 maximumBy
은 비교를 위해 모든 튜플의 두 번째 요소 만 사용하며 최대 값을 얻습니다. 그러나 최대 튜플의 첫 번째 요소 만 필요합니다. 그래서 우리는 튜플에서 첫 번째 요소 만 가져 오는 fst
함수를 사용합니다.
양자 택일로, 당신은 모두가 올바른 방법이 될 것 같습니다이
import Data.Ord (comparing)
import Data.List (maximumBy)
main = print $ fst (maximumBy (comparing snd) [(1, 5), (2, 1)])
-- 1
감사! 나는 결코 들어 본 적이 없지만 아주 유용하게 보인다 ... 내 자신의 비교와 최대 글을 끝냈다. btw – Elliot
@ 엘리엇 : 폴딩은 꽤 흔하다. LYAH를 따라 간다면 6 장에서'foldl'과'foldr'을 보게 될 것입니다. – Zeta