Guest User

Untitled

a guest
Feb 15th, 2019
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.52 KB | None | 0 0
  1. mergeIM :: (Int->a->Maybe b->c) -> IM.IntMap a -> IM.IntMap b -> IM.IntMap c
  2. mergeIM = case True of
  3. True -> mergeIM_s
  4. False -> mergeIM_f
  5.  
  6. mergeIM_s :: (Int->a->Maybe b->c) -> IM.IntMap a -> IM.IntMap b -> IM.IntMap c
  7. mergeIM_s f im im' = IM.mapWithKey g im
  8. where
  9. g k x = f k x $ IM.lookup k im'
  10.  
  11. mergeIM_f :: (Int->a->Maybe b->c) -> IM.IntMap a -> IM.IntMap b -> IM.IntMap c
  12. mergeIM_f f = IM.mergeWithKey mrg (IM.mapWithKey lft) (const IM.empty)
  13. where
  14. mrg i x y = Just $ f i x $ Just y
  15.  
  16. lft i x = f i x Nothing
Add Comment
Please, Sign In to add comment