Dies ist eine Implementierung von Mergesort mit Funktionen höherer Ordnung, Wachen, wo und Rekursion.Haskell Merge Sort
jedoch einen Fehler von Compiler bekommen 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
ich nicht, was falsch sehen kann? oder ich verstehe den Compiler nicht.
btw - wenn Sie Länge verwenden dies ist ein O (n) -Operation - so sind Sie unnötigen Aufwand produzieren in der Regel, wenn Sie viel mit (Single-linked) listet mit Länge Indizierung werden Sie wahrscheinlich verwenden die falsche Datenstruktur. – epsilonhalbe