하스켈에서 병합 정렬을 작성했습니다. 숫자가 아닌 단어를 사용할 때 작동합니다. 그렇게 생각했습니다. 단어와 글자를 사용할 때 "범위가 맞지 않습니다"라는 메시지가 나타납니다. 내가 도대체 뭘 잘못하고있는 겁니까?하스켈 - 병합 단어와 숫자 정렬하기
merge :: Ord a => [a] -> [a] -> [a]
merge [] ys = ys
merge xs [] = xs
merge (x:xs) (y:ys)
| x <= y = x : merge xs (y:ys)
| otherwise = y : merge (x:xs) ys
mergeSort :: Ord a => [a] -> [a]
mergeSort [] = []
mergeSort [x] = [x]
mergeSort xs
= merge (mergeSort top) (mergeSort bottom)
where
(top, bottom) = splitAt (length xs `div` 2) xs
이것은 문자열, fe 'mergeSort [ "banana", "candy", "apple"]' –
코드는 괜찮아 보입니다. 정확한 입력과 완전한 오류 메시지를 보는 것이 도움이 될 수 있습니다. * something *이 범위 내에 있지 않다는 것이 정확히 도움이되지는 않습니다. – fuz