Это выражение имеет тип int -> int, но здесь используется с типом int - PullRequest
0 голосов
/ 29 марта 2011

Напишите функцию rindex l e : 'a list -> 'a -> int, которая принимает список и отдельный элемент и возвращает позицию последнего вхождения этого элемента в списке (индексируется нулем). Вы должны вернуть -1, если элемента нет в списке.

Это моя попытка, но я получаю ошибку «This expression has type int -> int but is here used with type int». Что за дело?

let rec finderd l e n r=  
  match l with [] -> r
  |(h::t) -> if h=e then (finderd t e (n+1) n) else (finderd t e (n+1) r);;
let rindex l e =(finderd l e 0 -1);;

1 Ответ

2 голосов
/ 29 марта 2011

Это очень распространенная обратная сторона синтаксиса. Должно быть:

let rindex l e =(finderd l e 0 (-1));;

В противном случае он распознает 0 -1 как выражение.

...