>

튜플 목록을 인수로 사용하여 두 번째 요소별로 정렬하는 함수를 만들려고합니다. 다른 것은 인쇄하지 않고 '*** 예외 : main.hs : 20 : 1-76 : sortWords 함수의 비 포괄적 패턴'오류 코드는 다음과 같습니다.

sortWords :: [(String, Int)] -> [(String, Int)]
sortWords [(str,num)] = sortBy (\x y -> compare (snd x) (snd y)) [(str,num)]`

여기에 함수를 호출하는 방법이 있습니다

main = do
    putStrLn $ show $ sortWords [("friend",1),("she",2)]

http://Repl.it 웹 사이트

에서 프로그램을 실행하고 있다고 말해야합니다.

감사합니다!

  • 답변 # 1

    sortWords [(str,num)] =
    
    

    함수 정의 (위) 패턴은 두 값 각각에 대한 변수가있는 튜플 인 단일 요소를 포함하는 목록과 일치합니다.

    패턴 일치가 아닌 변수 만 원하는 것 같습니다 :

    sortWords xs  = sortBy (\x y -> compare (snd x) (snd y)) xs
    
    

    또는 에타 감소 :

    sortWords = sortBy (\x y -> compare (snd x) (snd y))
    
    

관련 자료

  • 이전 c++ - 처음 쓰기 후 바이너리 파일에 추가
  • 다음 macOS에서 awk 버전을 얻는 방법은 무엇입니까?