Ключевая проблема, я думаю, заключается в том, что mod
является ключевым словом в OCaml и рассматривается как инфиксный оператор.Но mod_float
это просто обычная функция.Вы должны использовать его в виде префикса.
Так что x mod n
следует перевести на mod_float x n
.
У вас есть другая проблема, которая заключается в том, что вы используете специальное назначение ==
оператор для сравнения на равенство.Вы хотите использовать =
для сравнений на равенство в OCaml, если только вам не нужно «физическое» сравнение (а здесь это не то, что вам нужно).
Это не просто стилистика - это действительно имеет значение.Обратите внимание на следующие результаты:
# 0.0 == 0.0;;
- : bool = false
# 0.0 = 0.0;;
- : bool = true