Я выполняю функцию в OCaml, и я хочу подсчитать количество итераций в переменной n. Это функция:Проблемы с рекурсивной функцией в OCaml
let mapdoble f1 f2 l =
let rec aux n f_1 f_2 l1 l2= match(n,f_1,f_2,l1,l2) with
(n,_,_,[],l2) -> l2
| (n,f_1,_,h::t,l2) when n mod 2 = 0 -> aux n+1 f1 f2 t [email protected][f_1 h]
| (n,_,f_2,h::t,l2) when n mod 2 = 1 -> aux n+1 f1 f2 t [email protected][f_2 h]
in
aux 0 f1 f2 l [];;
Когда я скомпилировать у меня есть эта ошибка, я не знаю, что это такое:
Error: This expression has type 'a -> 'b -> 'c list -> 'd -> 'd but an expression was expected of type int
Я думаю, что вы просто отсутствуете круглые скобки вокруг двух экземпляров 'n + 1'. –
@ReimerBehrends пишет, вам нужно поставить круглые скобки вокруг 'n + 1'. Вы также должны соответствовать всем случаям, компилятор должен предупредить вас об этом тоже с примером. – cago