Я только начал изучать Ocaml и я играю с рекурсивными функциями. Компилятор Ocaml сообщает мне, что рекурсивно вызов хелпера в «if h1 = h2 then helper t1 t2» вызывает ошибку: это выражение имеет тип «список» * list -> bool, но ожидалось выражение типа bool. Я понимаю, что он говорит мне, что компилятор ожидает логического, но вместо этого получает функцию, которая возвращает логическое значение. Но я понятия не имею, как я могу это исправить. Любая помощь приветствуетсяOcaml: Это выражение имеет тип 'список *' список -> bool, но ожидалось выражение типа bool
let rec a_func l =
let rec helper tmp l1 = function
| [], [] -> true
| _, [] -> false
| h1::t1, h2::t2 -> if h1=h2 then helper t1 t2 else helper [h2]@l1 t2
in helper [] l
Благодарим за объяснение! – user1848861