2017-10-13 6 views
0

3 개 이하의 요소 목록을 정렬하는 정렬 함수를 만들려고하지만 패턴 일치가 나를 혼란스럽게합니다. (12 - (7,1) : fun.hs :Haskell의 목록에서 3 개 항목을 정렬하는 방법?

intCMP :: Int -> Int -> Ordering 
intCMP a b | a == b =EQ 
      | a < b = LT 
      | otherwise = GT 

sort3 :: Ord a => (a -> a -> Ordering) -> [a] -> [a] 
sort3 _ [] = [] 
sort3 _ [a] = [a] 
sort3 cmp [a,b] = if cmp a b == LT then 
        [a,b] 
        else 
        [b,a] 
sort cmp [a,b,c] = [a,b,c] 

하지만 난 intCMP sort3이 오류

* 홈페이지> [1,1,1]

*** 예외가 계속 , 23) : 함수의 비 한정적인 패턴 sort3

+0

커스텀'intCMP'보다는'compare'를 쓰지 않는 이유는 무엇입니까? – dfeuer

+0

당신은'cmp'를 사용할 필요가 없습니다.'a 4castle

답변

4

마지막 절인 것은 실제로 sort (sort3 대신)이라는 새 함수입니다. -Wall을 켜면 이런 종류의 오류를 알 수 있습니다.

+0

2 시간 동안 이걸 쳐다 보았습니다. –