从列表中获取元素,然后将它们成对添加F#

时间:2019-02-24 11:50:11

标签: list f# tuples

我刚刚开始我的F#冒险并陷入困境。我想编写一个递归函数,该函数从列表中获取元素,成对添加它们并返回列表-int list->(int * int)list

像这样: [x1; x2; x3; x4] = [(x1,x2);(x3,x4)]

这就是我现在所拥有的。

let rec combinePair xs = 
    match xs with
    |[] -> []
    |[x] -> [x]
    |x::y::xs' ->  (x,y)::combinePair xs'

这行不通,但是我觉得可能接近答案。我只是不怎么从这里继续。在我仍在尝试学习的过程中,我希望也许有人可以指出正确的方向,而不是给出完整的答案

欢呼

1 个答案:

答案 0 :(得分:5)

我非常接近答案。我忘记添加列表包含奇数个元素的情况下会发生的情况。就我而言,我只是希望它摆脱最后一个要素。这是解决方案

let rec combinePair xs = 
  match xs with
  | [] -> []
  | [x] -> []
  | x::y::xs' -> (x,y)::combinePair xs'