2012-02-16 2 views
1

У меня есть этот код, предоставленный моим инструктором. Я должен исправить это, найдя, какой тип f # выводит из mergesort. Когда я пытаюсь отправить на интерактивный, я получаю сообщение об ошибке. Я спросил у своего proffesor, что не так, и он сказал, что это связано с ошибками форматирования на веб-сайте класса. Я попытался добавить пробелы удаления пространства вы называете его, но каждый раз, когда я получаюf # интервал и mergesort

~ 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) 
+3

F # имеет значительные пробелы и поэтому отступы имеет решающее значение –

+2

Просто любопытно - где вы принимаете курс колледжа, который с помощью F # для языка? –

ответ

5

Я могу только догадываться относительно того, что правильно отступы, но и hellip;

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)