안녕하세요 저는 초보자 인 haskell입니다.하스켈 - 정렬 후 튜플 목록에서 n 개 항목을 가져 오는 방법
[("and",2),("the",2),("cat",1),("dog",1),("rabbit",1)]
이 나에게 결과를 제공
sortWords = sortBy(flip compare `on` snd)
: 주파수에 의해 목록을 정렬과 내림차순
[("and",2),("cat",1),("dog",1),("rabbit",1),("the",2)]
우선 :이 튜플 목록에서 처음 3 개 항목을 얻기 위해 노력하고 있어요
그렇다면 기능을 수행 할 수 있다는 것을 알고 있습니다.
take 3 [("and",2),("the",2),("cat",1),("dog",1),("rabbit",1)]
그러나 날
[("and",2),("the",2),("cat",1)]
의 원하는 결과를 제공 1,515,
, 난 sortWords
함수로 take
기능을 통합 할 수있게하려면. 문제는 내가 이것을 시도 할 때 예를 들면 다음과 같습니다.
sortWords = take 3 (sortBy(flip compare `on` snd))
이것은 작동하지 않습니다.
기능을 수행 할 수 있도록 다른 사람에게 전달하고 싶지 않으므로 이상적으로는 sortWords
을 종료 기능으로 유지하고 싶습니다. 해결책이 될 수있는 sortWords
을 호출하기 전에 take
을 수행 할 방법이 있다면, 그러나 나는 또한 이것을 시도하고 찍은 단어가 먼저 정렬되지 않으므로 내가 원하는 결과를주지 않는다는 것을 알았습니다.
sortBy (flip compare `on` snd)
가
하지 튜플의 목록입니다 당신에게
효과가있었습니다. 고맙습니다 :) – k1r4n