Pregunta

Tengo este código proporcionado por mi instructor. Se supone que debo arreglarlo encontrando qué tipo F# infiere de Mergesort. Cuando intento enviar a Interactive, recibo un error. Le pregunté a mi profesor qué estaba mal y él dijo que se debió a los errores de formato en el sitio web de la clase. He intentado agregar espacios de eliminación de espacios que lo sean, pero cada vez que obtengo un

~ VS4489.FSX (8,14): Error FS0588: El bloque después de este 'Let' está inacabado. Esperar una expresión.

en los últimos dos métodos. ¿Cómo puedo arreglar esto?

Aquí está el código

 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)
¿Fue útil?

Solución

yo solo puedo adivinar En cuanto a cuál es la sangría correcta, pero ...

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)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top