Если со многими условиями в Ocaml - PullRequest
0 голосов
/ 19 декабря 2018

Я новичок в oCaml, и у меня есть ошибка в этой следующей функции:

let rec determinant n m1 = 
    if n <= 2 then 
        detMat2 m1
    else 
        let mat = Array.make_matrix (n-1) (n-1) 0 in 
            for ligne = 0 to (n-1) do
                for colonne = 0 to (n-1) do
                    for i = 0 to (n-1) do
                        for j = 0 to (n-1) do
                            if i != (n-1) && j != (n-1) then 
                                else if (i != ligne && j != colonne) then
                                    mat.(i).(j) <- m1.(ligne).(colonne)
                                else if i != ligne && j = colonne then 
                                    mat.(i).(j) <- m1.(ligne).(colonne+1)
                                else if i = ligne && j != colonne then
                                    mat.(i).(j) <- m1.(ligne+1).(colonne)
                                else if i = ligne && j = colonne then 
                                    mat.(i).(j) <- m1.(ligne+1).(colonne+1)                     
                        done                
                    done    
                done
            done;
    determinant (n-1) mat;;

Я получаю следующую ошибку:

File "s2.ml", line 65, characters 9-13:
Error: Syntax error

Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 19 декабря 2018

Поскольку в отрывке кода, который вы нам показываете, намного меньше 65 строк, сообщение об ошибке явно не то, что вы получаете только из этого кода.Пожалуйста, найдите время, чтобы создать mcve .

Тем не менее, ветвь then if, следующая сразу за самой внутренней петлей for, пуста.Вы не можете сделать это в OCaml: если ничего не нужно делать, это следует сказать явно, возвращая () (единственное значение типа unit), как в

if i != (n-1) && j != (n-1) then ()
else (* do the rest *)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...