Начинаем изучать OCAML.
Предположим, у нас есть одна проверочная функция:
let check x y = if (y mod x) = 0 then true else false;;
Затем для любой данной пары ab я хотел бы повторить, чтобы найти пару ij, которая удовлетворяла бы: 1 let g (x, y) =
let rec gf i j =
if check i j then (i, j) else gs i j
and gs i j =
if check i j then (i, j) else
if j <= y then gs i (j + 1) else
if i > 1 then gf (i - 1) j else (-1, -1)
in (gf x 1 && gs x 1);;
Но я получаю сообщение об ошибке:
Error: This expression has type int * int
but an expression was expected of type bool
Я не вижу, откуда у меня возвращается бул из этой функции g (x, y)
.Может быть, есть более простой способ написать (эй, я новичок), но я хотел бы понять логику здесь.