如何定义函数,对于第一个地图查找的每个键,第二个地图的值,将一些函数应用于这两个值并生成第三个地图?
∷ (α → Maybe β → γ) → Map k α → Map k β → Map k γ
我使用unionWith
,differenceWith
和intersectionWith
的某些组合稍微玩了一下,但坚持将它们与lookup
混合使用。
答案 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
你想要什么?