我是ocaml的新手(我在学校学习),在我的练习中,我需要编写一个函数,该函数给出int列表的最小值。我写的是:
let rec minimum liste =
match liste with
|[a] -> a
|[a;b] -> if a<b then a else b
|a::b::r -> if a<b then minimum (a::r) else minimum (b::r)
;;
但是,ocaml告诉我:
val minimum : 'a list -> 'a = <fun>
正如我所说,我需要val minimum : int list -> int = <fun>
请问你能帮帮我吗 ?谢谢!
答案 0 :(得分:2)
您的代码不执行任何取决于输入为任何特定类型的操作。因此,OCaml(或多或少正确地)推断它将适用于任何类型的列表。
如果愿意,可以通过这样指定函数参数来限制它们的类型:
let f (x: type) = ...
所以你可以说:
let rec minimum (liste: int list) = ...
(作为附带说明,您可以在一个空列表上尝试使用函数以查看会发生什么。)