编写一个函数
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);;
答案 0 :(得分:2)
这是语法的一个非常常见的缺点。应该是:
let rindex l e =(finderd l e 0 (-1));;
否则,它会将0 -1
识别为表达式。