如何找到最小的元组列表

时间:2013-04-02 16:17:17

标签: ocaml

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

的列表
let rec minRight l = match l with
    | [] -> raise (Arg.Bad "minRight: empty list")
    | [x]-> x
    | (_,y)::xs -> min y (minRight xs)

错误:

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

提前致谢。

2 个答案:

答案 0 :(得分:2)

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

| [x]-> x

返回一个元组,而你说你想“返回元组的snd元素[s]的最小值”。

答案 1 :(得分:0)

我想也许你的问题是你命名你的函数min,但你也想使用标准的OCaml函数min。这可能吗?

OCaml没有重载(作为补偿,它具有参数多态性)。所以你需要使用不同的名称。