Как преобразовать список списка int в список (int * int) в F#

Если я хочу конвертировать список [[[0; 5]; [1; 5]; [2; 3]]] к списку кортежей [(0, 5); (1, 5); (2, 3)] используя F# или сопоставление с образцом в F#, пожалуйста, как мне это сделать?

1 ответ

Я бы сгладил внешний уровень списка (путем объединения списков второго уровня), а затем преобразовал бы внутренние списки в кортежи, используя map:

let transform lst =
    lst
    |> List.concat
    |> List.map (function
        | [a; b] -> (a, b)
        | _ -> failwith "Incorrect list syntax")
Другие вопросы по тегам