地图上的非交换交叉

时间:2012-06-10 21:48:45

标签: haskell map

如何定义函数,对于第一个地图查找的每个键,第二个地图的值,将一些函数应用于这两个值并生成第三个地图?

∷ (α → Maybe β → γ) → Map k α → Map k β → Map k γ

我使用unionWithdifferenceWithintersectionWith的某些组合稍微玩了一下,但坚持将它们与lookup混合使用。

1 个答案:

答案 0 :(得分:5)

foo :: (α → Maybe β → γ) → Map k α → Map k β → Map k γ
foo comb ma mb = Map.mapWithKey (\k a -> comb a (Map.lookup k mb)) ma

你想要什么?