Возьмите элементы из списка и рекурсивно добавьте их в пары F # - PullRequest
0 голосов
/ 24 февраля 2019

Я только что начал свое приключение на F # и застрял.Я хочу написать рекурсивную функцию, которая берет элементы из списка, добавляет их попарно и возвращает список - int list -> (int * int) list

Вот так: [x1;х2;x3;x4] = [(x1, x2); (x3, x4)]

Это то, что у меня есть сейчас.

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

Это не работает, но я чувствую, что это может бытьблизко к ответу.Я просто не могу продолжать отсюда.Поскольку я все еще пытаюсь учиться, я надеялся, что, возможно, можно было бы указать мне правильное направление вместо того, чтобы дать мне полный ответ

Приветствия

1 Ответ

0 голосов
/ 24 февраля 2019

Я был очень близок к ответу.Я забыл добавить, что произойдет в случае списка, содержащего нечетное количество элементов.В моем случае я просто хотел избавиться от последнего элемента.Это решение

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