Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Types 此表达式的类型为int->;int,但在这里与int类型一起使用_Types_Syntax_Ocaml - Fatal编程技术网

Types 此表达式的类型为int->;int,但在这里与int类型一起使用

Types 此表达式的类型为int->;int,但在这里与int类型一起使用,types,syntax,ocaml,Types,Syntax,Ocaml,编写一个函数rindex l e:'a list->'a->int,它接受一个列表和一个元素,并返回该元素在列表中最后一次出现的位置(索引为零)。如果元素不在列表中,则应返回-1 这是我的尝试,但我得到错误“此表达式的类型为int->int,但在这里与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

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

这是我的尝试,但我得到错误“
此表达式的类型为int->int,但在这里与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);;

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

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

否则它会将
0-1
视为一个表达式。

哇,谢谢,我花了半个小时试图弄明白这一点,愚蠢的奥坎姆如果你想避开帕伦夫妇,你可以使用,
-
-.
,因为一元等价物.RTFM在任何情况下都是一个相当严厉的批评。对-1的理解在人的头脑中有一个隐含的条件意义;需要在用户头脑中发生范式转换,以认识到
-
是两个参数的函数,而不是一元否定的符号。这是阅读手册所不能做到的。iirc,(-1)在每个ocaml教程中都会强调。我相信,对于那些编写过教程的人来说,询问(和回答)教程/手册中包含的问题是一种粗鲁的工作。@ygrek:嗯,我个人喜欢回答关于我很久没用过的语言的问题。如果我想在任何项目中再次使用ocaml,我会阅读手册、教程等。但我不需要,我还有其他事情要做。然而,时不时地让自己接触一点点,这只会让我的头脑保持健康。但也许我只是太粗鲁了。那我道歉。