Я пытаюсь написать программу на языке OCaml, но у меня возникают проблемы с использованием вложенных функций. Вот код, который я написал:
let prime : int -> bool
= fun x ->
if x > 2 then
let a = x - 1 in
let rec checkZero a x =
if a > 1 then
match x mod a with
0 -> false
|_ -> checkZero (a - 1) x
else if a = 1 then
true
else if x = 2 then
true
else
false
;;
Чтобы кратко объяснить мой код, я использую вложенную функцию с именем checkZero
, чтобы определить, делится ли x
на значение a
, которое начинается с x - 1
и снижается до 2.
После выполнения сопоставления с образцом, если результат операции mod
равен 0, тогда x
не является простым числом, а если результатом является что-либо еще, то мы вычитаем 1 из a
и выполняем checkZero
еще раз.
Конкретное сообщение об ошибке, которое я получаю, заключается в том, что я получаю синтаксическую ошибку, где двойные точки с запятой.
Я не слишком знаком с тем, как работает OCaml, но я знаю, что двойные точки с запятой используются, когда вы хотите, чтобы весь код был выражением.
Я не совсем уверен, что является причиной ошибки.
Любые отзывы приветствуются. Спасибо!