1

我必须找到一个元组列表的最小值,但我只想返回元组中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

提前致谢。

4

2 回答 2

2

这是一个问题,除了前面的答案中提到的问题:线

| [x]-> x

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

于 2013-04-02T16:40:58.253 回答
0

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

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

于 2013-04-02T16:23:51.000 回答