Ответ 1
Сначала преобразуйте карту в последовательность кортежей (key,value)
, а затем сопоставьте ее с последовательностью просто клавиш:
map |> Map.toSeq |> Seq.map fst
Пример FSI:
>Map.ofList[(1,"a");(2,"b")] |> Map.toSeq |> Seq.map fst;;
val it : seq<int> = seq [1; 2]
Или, альтернативно, поскольку упорядочение ключей, вероятно, не имеет значения, вы можете использовать более нетерпеливый метод, возвращающий list
всех ключей. Также нетрудно сделать это в методе расширения keys
модуля Microsoft.FSharp.Collections.Map
:
module Map =
let keys (m: Map<'Key, 'T>) =
Map.fold (fun keys key _ -> key::keys) [] m