我已經在Haskell中編寫了一個合併排序,它在使用數字而不是單詞時起作用,我認爲它會。在使用文字和字母時,我只會得到「不在範圍內」。我究竟做錯了什麼?Haskell - 合併排序,整理單詞和數字
這裏是我的代碼:
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
這適用於Strings,fe 'mergeSort [「香蕉」,「糖果」,「蘋果」]' –
你的代碼看起來沒問題。查看確切的輸入和完整的錯誤信息可能會有幫助。這並不完全有用,因爲* something *不在範圍內...... – fuz