这是使用高阶函数、守卫、where和递归实现的Mergesort。但是编译器报错:
6:26:输入上的解析错误“=”
。 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
我看不出有什么问题?或者说我不理解编译器。