Это реализация Mergesort с использованием функций более высокого порядка, охранников, где и рекурсия.Haskell Merge Sort
Однако получаю сообщение об ошибке от компилятора 6:26: parse error on input ‘=’
mergeSort :: ([a] -> [a] -> [a]) -> [a] -> [a]
mergeSort merge xs
| length xs < 2 = xs
| otherwise = merge (mergeSort merge first) (mergeSort merge second)
where first = take half xs
second = drop half xs
half = (length xs) `div` 2
Я не могу видеть, что случилось? или, скорее, я не понимаю компилятор.
кстати - если вы используете длину это O (п) операции - так вы производите ненужные накладные расходы, в общем, если вы используете длину индексации много с (один-сшитым) перечисляет вы, вероятно, с помощью неправильная структура данных. – epsilonhalbe