2016-08-05 23 views
0

Ich habe unten Code-Schnipsel in Haskell, um einen Quicksort-Algorithmus zu implementieren.Wie man "let" Schlüsselwort verwendet, um mehrere Variablen in Haskell zu definieren

Allerdings wird es nicht von GHCI kompiliert und es teilt mit, dass Zeile 5 Syntaxfehler hat. Aber ich habe die Haskell Syntax für "let" Schlüsselwort überprüft und es scheint in Ordnung zu sein. Gibt es jemanden, der mir bei diesem Problem helfen kann? Danke vielmals.

+0

weil 'let' kann in der gleichen Spalte wie Ihre Funktion ist nicht sein, in diesem Fall der Spalte 1 nur einen Raum, in dem Anfang der Zeilen hinzufügen Start 5. – HuStmpHrrr

+0

Ein bisschen unreladely auf Ihre Frage, aber es könnte helfen Sie irgendwie, wenn Sie Haskell lernen: Beachten Sie, dass dieser Algorithmus nicht wirklich Quicksort ist. Es verwendet kein konstantes Gedächtnis. http://augustss.blogspot.cz/2007/08/quicksort-in-haskell-quicksort-is.html – user1747134

Antwort

7

Sie müssen den Ausdruck let einrücken, da es eine Fortsetzung der vorherigen Zeile ist.

quicksort :: (Ord a) => [a] -> [a] 
quicksort [] = [] 
quicksort (x:xs) = 
    let smaller = quicksort [a | a <- xs, a <= x] 
     bigger = quicksort [a | a <- xs, a > x] 
    in smaller ++ [x] ++ bigger