git.iko.soy/typeable/refined-containers
on main help sign in
Work around a bug in mergeWithKey
9cac37amniip
src/Data/IntMap/Common/Refined.hs+7−2
@@ -241,8 +241,13 @@ zipWithKey
241 -> IntMap s c
241 -> IntMap s c
242zipWithKey f (IntMap m1) (IntMap m2) = IntMap
242zipWithKey f (IntMap m1) (IntMap m2) = IntMap
243 $ IntMap.mergeWithKey (\k x y -> Just $ f (unsafeKey k) x y)
243 $ IntMap.mergeWithKey (\k x y -> Just $ f (unsafeKey k) x y)
244+ (\m -> if IntMap.null m
245+ then IntMap.empty
244− (error "zipWithKey: bug: Data.IntMap.Refined has been subverted")
246+ else error "zipWithKey: bug: Data.IntMap.Refined has been subverted")
247+ (\m -> if IntMap.null m
248+ then IntMap.empty
245− (error "zipWithKey: bug: Data.IntMap.Refined has been subverted")
249+ else error "zipWithKey: bug: Data.IntMap.Refined has been subverted")
250+ -- ^ Work around https://github.com/haskell/containers/issues/979
246 m1
251 m1
247 m2
252 m2
248
253
src/Data/IntMap/Strict/Refined.hs+9−2
@@ -236,8 +236,15 @@ zipWithKey
236 -> IntMap s c
236 -> IntMap s c
237zipWithKey f (IntMap m1) (IntMap m2) = IntMap
237zipWithKey f (IntMap m1) (IntMap m2) = IntMap
238 $ IntMap.mergeWithKey (\k x y -> Just $ f (unsafeKey k) x y)
238 $ IntMap.mergeWithKey (\k x y -> Just $ f (unsafeKey k) x y)
239+ (\m -> if IntMap.null m
240+ then IntMap.empty
241+ else
239− (error "zipWithKey: bug: Data.IntMap.Strict.Refined has been subverted")
242+ error "zipWithKey: bug: Data.IntMap.Strict.Refined has been subverted")
243+ (\m -> if IntMap.null m
244+ then IntMap.empty
245+ else
240− (error "zipWithKey: bug: Data.IntMap.Strict.Refined has been subverted")
246+ error "zipWithKey: bug: Data.IntMap.Strict.Refined has been subverted")
247+ -- ^ Work around https://github.com/haskell/containers/issues/979
241 m1
248 m1
242 m2
249 m2
243
250
src/Data/Map/Common/Refined.hs+7−2
@@ -241,8 +241,13 @@ zipWithKey
241 => (Key s k -> a -> b -> c) -> Map s k a -> Map s k b -> Map s k c
241 => (Key s k -> a -> b -> c) -> Map s k a -> Map s k b -> Map s k c
242zipWithKey f (Map m1) (Map m2) = Map
242zipWithKey f (Map m1) (Map m2) = Map
243 $ Map.mergeWithKey (\k x y -> Just $ f (unsafeKey k) x y)
243 $ Map.mergeWithKey (\k x y -> Just $ f (unsafeKey k) x y)
244+ (\m -> if Map.null m
245+ then Map.empty
244− (error "zipWithKey: bug: Data.Map.Refined has been subverted")
246+ else error "zipWithKey: bug: Data.Map.Refined has been subverted")
247+ (\m -> if Map.null m
248+ then Map.empty
245− (error "zipWithKey: bug: Data.Map.Refined has been subverted")
249+ else error "zipWithKey: bug: Data.Map.Refined has been subverted")
250+ -- ^ Work around https://github.com/haskell/containers/issues/979
246 m1
251 m1
247 m2
252 m2
248
253
src/Data/Map/Strict/Refined.hs+7−2
@@ -244,8 +244,13 @@ zipWithKey
244 => (Key s k -> a -> b -> c) -> Map s k a -> Map s k b -> Map s k c
244 => (Key s k -> a -> b -> c) -> Map s k a -> Map s k b -> Map s k c
245zipWithKey f (Map m1) (Map m2) = Map
245zipWithKey f (Map m1) (Map m2) = Map
246 $ Map.mergeWithKey (\k x y -> Just $ f (unsafeKey k) x y)
246 $ Map.mergeWithKey (\k x y -> Just $ f (unsafeKey k) x y)
247+ (\m -> if Map.null m
248+ then Map.empty
247− (error "zipWithKey: bug: Data.Map.Strict.Refined has been subverted")
249+ else error "zipWithKey: bug: Data.Map.Strict.Refined has been subverted")
250+ (\m -> if Map.null m
251+ then Map.empty
248− (error "zipWithKey: bug: Data.Map.Strict.Refined has been subverted")
252+ else error "zipWithKey: bug: Data.Map.Strict.Refined has been subverted")
253+ -- ^ Work around https://github.com/haskell/containers/issues/979
249 m1
254 m1
250 m2
255 m2
251
256