0
我想做一個排序功能,排序3個或更少的元素的列表,但模式匹配令我困惑。如何對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]
但一直收到這個錯誤
*主要> sort3 intCMP [1,1,1]
***異常:fun.hs:(7,1) - (12 ,23):功能排序3中的非窮舉模式
爲什麼不使用'compare'而不是自定義的'intCMP'? – dfeuer
你不需要使用'cmp',你可以直接寫'if a 4castle