Ocaml 如何找到元组列表的最小值

Ocaml 如何找到元组列表的最小值,ocaml,Ocaml,我必须找到一个元组列表的最小值,但我只想返回元组的snd元素的最小值,而不是整个元组。不幸的是,我在下面的代码中有以下错误,我不知道为什么。l参数是元组列表(float*float) 错误: | (_,y)::xs -> min y (minRight xs) Error: This expression has type 'a but an expression was expected of type 'b * 'a 提前谢谢。我想您的问题可能是您将函数命名为min

我必须找到一个元组列表的最小值,但我只想返回元组的
snd
元素的最小值,而不是整个元组。不幸的是,我在下面的代码中有以下错误,我不知道为什么。l参数是元组列表
(float*float)

错误:

| (_,y)::xs -> min y (minRight xs)
Error: This expression has type 'a but an expression was expected of type
         'b * 'a

提前谢谢。

我想您的问题可能是您将函数命名为
min
,但您还想使用标准的OCaml函数
min
。可能吗


OCaml没有重载(因为它具有参数多态性)。所以你需要用不同的名称来表示事物。

除了前面的答案中提到的问题外,这里还有一个问题:行

| [x]-> x

返回一个元组,而您说要“返回元组中snd元素的最小值”。

很抱歉,为了简化,我已将原始名称更改为“min”,但我忘记了这个问题。。但是原始函数名不是min,所以这不是问题=/谢谢,问题解决了。因为我的声誉,我不能给你投票。(希望我们都能超越我们的声誉。我认为其他人的帮助比我更大。)好的,我认为这就是问题所在,我删除了那一行并最终编译:DDon不要删除这一行,函数不会处理长度为1的列表的情况。在第一种情况下,它总是会抛出异常。相反,请重写它。(注:别忘了对所有有用的答案进行投票)。谢谢!解决方案是:让rec minRight l=将l与|[]->raise(Arg.Bad“minRight:empty list”)|[(x,y)]->y |(x,y)::xs->miny(minRight xs)
| [x]-> x