Dictionary 如何在f#中创建地图副本?

Dictionary 如何在f#中创建地图副本?,dictionary,f#,f#-3.0,Dictionary,F#,F# 3.0,我知道这将创建一个名为students的地图。我在想一种方法来创建这个地图的副本,具有相同的键和值。我查看了f#的文档,没有找到任何克隆/创建地图副本的方法。这里有一种方法 let students = Map.empty. Add("ABC", "97"). Add("Jill", "98");; printfn "Map - students

我知道这将创建一个名为students的地图。我在想一种方法来创建这个地图的副本,具有相同的键和值。我查看了f#的文档,没有找到任何克隆/创建地图副本的方法。

这里有一种方法

   let students =
    Map.empty.
          Add("ABC", "97").
          Add("Jill", "98");;
    printfn "Map - students: %A" students
F#映射是不可变的。这意味着“更改”地图实际上意味着创建一个稍作更改的副本。复制过程使用技巧使其比完整复制快得多。对于大多数数据,新版本实际上可以指向旧版本。这样做是安全的,因为地图是不变的:它们永远不会改变


这意味着没有可能的理由复制映射,除了预热CPU警告:这样做没有可能的好处。详细内容请参见我的答案。同意,没有理由复制地图-我只是告诉他如何复制。
let copy =
    students
    |> Seq.map (fun pair -> pair.Key, pair.Value)
    |> Map