Salut,
j'aimerais forcer l'annotation de types sur une expression OCaml mais je me retrouve avec une erreur bête mais sur laquelle je bloque depuis un bout de temps. Je ne suis pas arrivé à trouver de la doc sur un truc aussi précis.
Si quelqu'un peut me donner un coup de pouce
L'expression de base
Code :
- let rec index v l = match l with
- | [] -> raise Not_found
- | h::t -> if v = h then 0 else 1+(index v t);;
- val index : 'a -> 'a list -> int = <fun>
|
L'expression avec annotation de type et son erreur:
Code :
- let rec index v l (v: 'a) (l: 'a list) = match l with
- | [] -> raise Not_found
- | h::t -> if v = h then 0 else 1+(index v t);;
- Characters 116-127:
- | h::t -> if v = h then 0 else 1+(index v t);;
- ^^^^^^^^^^^
- This expression has type 'a -> 'a list -> 'b but is here used with type int
|