int list -> int 而不是 'a list -> 'a
int list -> int instead of 'a list -> 'a
我是 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>
请问你能帮帮我吗 ?谢谢!
您的代码不会执行任何取决于输入是任何特定类型的事情。所以 OCaml(或多或少正确)推断它适用于任何类型的列表。
如果你愿意,你可以像这样指定它们来限制函数参数的类型:
let f (x: type) = ...
所以你可以说:
let rec minimum (liste: int list) = ...
(作为旁注,您可以在空列表上尝试您的函数,看看会发生什么。)
我是 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>
请问你能帮帮我吗 ?谢谢!
您的代码不会执行任何取决于输入是任何特定类型的事情。所以 OCaml(或多或少正确)推断它适用于任何类型的列表。
如果你愿意,你可以像这样指定它们来限制函数参数的类型:
let f (x: type) = ...
所以你可以说:
let rec minimum (liste: int list) = ...
(作为旁注,您可以在空列表上尝试您的函数,看看会发生什么。)