Вопрос
У меня есть этот код, предоставленный моим инструктором. Я должен исправить это, обнаружив, какой тип F# проходит из Mergesort. Когда я пытаюсь отправить в Interactive, я получаю ошибку. Я спросил своего профессора, что случилось, и сказал, что это связано с ошибками форматирования на веб -сайте класса. Я пытался добавить места, снимающие пространства, которые вы называете, но каждый раз, когда я получаю
~ vs4489.fsx (8,14): ошибка fs0588: блок после этого «пусть» неверен. Ожидайте выражения.
На последних двух методах. Как я могу это исправить?
Вот код
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)
Решение
я могу только предполагать Что касается правильного отступления, но…
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)
Не связан с StackOverflow