Эта операция обычно известна как pairwise
:
И действительно, есть List.pairwise
, который возвращает кортеж.
list
|> List.pairwise
|> List.iter(fun (x, y) -> printfn "%d %d" x y)
Дает ожидаемый результат.
Более общий способ думать об этом:
List.zip (list |> List.skip 1) list
Поскольку в Linq отсутствует парное соединение:
items.Zip(items.Skip(1), (a, b) => a, b)
Конечно, было бы более эффективно с scan
, но это более читабельно.