此表达式的类型为int - > int但是这里使用的是int类型

时间:2011-03-28 22:28:02

标签: types syntax ocaml

  

编写一个函数rindex l e : 'a list -> 'a -> int,它接受​​一个列表和一个元素,并返回列表中该元素最后一次出现的位置(索引为零)。如果元素不在列表中,则应返回-1。

这是我的尝试,但我收到错误“This expression has type int -> int but is here used with type int”。什么是worong?

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 个答案:

答案 0 :(得分:2)

这是语法的一个非常常见的缺点。应该是:

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

否则,它会将0 -1识别为表达式。