我尝试使用以下方法添加两个不同长度的列表:
let sumList(a,b) = match a,b with
|[],_ -> []
|(x::xs,y::ys)-> (x + y)::diffList(xs,ys)
返回未绑定值sumList。是否可以像在Haskell中那样执行:zipWith(+)a b。
答案 0 :(得分:2)
实际错误可能是"未绑定值diffList",因为您没有在代码中定义diffList
。
如果这是转录错误,那么下一个问题是您需要将sumList
声明为递归函数:let rec sumList (a, b) = ...
。
您的模式匹配并非详尽无遗。如果第一个列表更长,则会失败。
Haskell zipWith
比OCaml List.map2
更友好,这需要列表长度相同。我不认为OCaml标准库中有任何友好的东西。