我有一个嵌套字典Map<'a,Map<'b,'T>>
,因此对于 的组合a*b
,条目是唯一的。
为了有效地进行预计算,我需要在Map<'b,Map<'a,'T>>
我有一些更高阶的方法可以完成这项工作(|/>
将在嵌套序列|//>
中应用相同的操作,但深度为 2 层,|*>
将枚举嵌套序列的笛卡尔积),但我想知道是否有更好的方法来做到这一点,以防万一有漂亮的代码可以分享。
let reversenmap (x:Map<'a,Map<'b,'T>>) :Map<'b,Map<'a,'T>> =
let ret = x |> Map.toSeq |/> Map.toSeq |*> squash12
let ret2 = ret |> Seq.groupByn2 (fun (a,b,t) -> b)
(fun (a,b,t) -> a) |//> Seq.head
|//> (fun (a,b,c) -> c)
ret2 |> Seq.toMapn2