如何合并Lucene索引文件?

时间:2016-02-29 12:44:03

标签: list ocaml

我正在尝试在ocaml中创建一个对列表,但问题是当列表的长度不同时,我不热,在其中一个元素不存在时生成对(a,b)。

1 个答案:

答案 0 :(得分:0)

很可能你必须创建一个类型来封装不同长度的情况,

 type ('a,'b) combined = Both of 'a * 'b | Left of 'a | Right of 'b

 let rec zipwith xs ys = match xs,ys with
   | x::xs,y::ys -> Both (x,y) :: (zipwith xs ys)
   | x::xs, []   -> Left x     :: (zipwith xs ys)
   | [], y::ys   -> Right y    :: (zipwith xs ys)
   | [], []      -> []

 # zipwith [1;2;3] [1;2];;
 - : (int, int) combined list = [Both (1, 1); Both (2, 2); Left 3]

你必须对尾部调用进行优化才能在长列表中工作,但这是如何处理问题的开始。