我正在尝试使用下面给出的模板在列表中找到最大元素而不使用List.Max进行学校作业.
let findMax l = let rec helper(l,m) = failwith "Not implemented" match l with | [] -> failwith "Error -- empty list" | (x::xs) -> helper(xs,x)
我能想到的唯一解决问题的方法是atm
let rec max_value1 l = match l with |[] -> failwith "Empty List" |[x] -> x |(x::y::xs) -> if x有什么方法可以从我构建的函数转到使用模板的函数吗?谢谢!
1> Gus..:你的辅助函数应该做的工作,外部函数只是验证列表不是空的,如果不是,调用帮助器,这应该是这样的:
let rec helper (l,m) = match (l, m) with | [] , m -> m | x::xs, m -> helper (xs, max m x)请注意,自从您与函数的最后一个参数匹配后,您可以将其删除并使用
function
而不是match
with
:let rec helper = function | [] , m -> m | x::xs, m -> helper (xs, max m x)