ocaml两个不同长度的列表的总和

时间:2014-04-21 18:56:04

标签: ocaml add

我尝试使用以下方法添加两个不同长度的列表:

let sumList(a,b) = match a,b with
   |[],_ -> []
   |(x::xs,y::ys)-> (x + y)::diffList(xs,ys)

返回未绑定值sumList。是否可以像在Haskell中那样执行:zipWith(+)a b。

1 个答案:

答案 0 :(得分:2)

实际错误可能是"未绑定值diffList",因为您没有在代码中定义diffList

如果这是转录错误,那么下一个问题是您需要将sumList声明为递归函数:let rec sumList (a, b) = ...

您的模式匹配并非详尽无遗。如果第一个列表更长,则会失败。

Haskell zipWith比OCaml List.map2更友好,这需要列表长度相同。我不认为OCaml标准库中有任何友好的东西。