2012-06-10 22 views
1

如何定義函數,爲第一張地圖查找每個鍵的第二張地圖的值,對這兩個值應用一些函數並生成第三張地圖?地圖上的非交換性交集

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

我打得有點與unionWithdifferenceWithintersectionWith一些組合,而是停留在與lookup混合它們。

回答

5

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

你想要什麼?