Frage

Ich habe diesen Code von meinem Ausbilder bereitgestellt. Ich soll es beheben, indem ich herausfindet, welche Typ F# von Mergesort ausfärbt. Wenn ich versuche, an interaktiv zu senden, bekomme ich einen Fehler. Ich fragte meinen Proffeor, was falsch war, und er sagte, dass dies an der Formatierung von Fehlern auf der Klassenwebsite zurückzuführen sei. Ich habe versucht, Leerzeichen hinzuzufügen, die Räume entfernen, die Sie nennen, aber jedes Mal, wenn ich eine bekomme

~ VS4489.FSX (8,14): Fehler FS0588: Block folgt, der diesem 'let' unvollendet ist. Erwarten Sie einen Ausdruck.

Bei den letzten beiden Methoden. Wie kann ich das beheben?

Hier ist der Code

 let rec merge = function

 | ([], ys) -> ys

 | (xs, []) -> xs

 | (x::xs, y::ys) -> if x < y then x :: merge (xs, y::ys)

 else y :: merge (x::xs, ys)
 let rec split = function

 | [] -> ([], [])

 | [a] -> ([a], [])

 | a::b::cs -> let (M,N) = split cs

 (a::M, b::N)

let rec mergesort = function

| [] -> []

| L -> let (M, N) = split L

merge (mergesort M, mergesort N)
War es hilfreich?

Lösung

Ich kann nur erraten Was die richtige Eindrücke ist, aber…

let rec merge = function
| ([], ys) -> ys
| (xs, []) -> xs
| (x::xs, y::ys) -> if x < y then x :: merge (xs, y::ys)
                    else y :: merge (x::xs, ys)

let rec split = function
| [] -> ([], [])
| [a] -> ([a], [])
| a::b::cs -> let (M,N) = split cs
              (a::M, b::N)

let rec mergesort = function
| [] -> []
| L -> let (M, N) = split L
       merge (mergesort M, mergesort N)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top