
So a small issue is that we can't apply this patch. Sending the full patch as an attachment is ok. sedillard:
[generalized type of IntMap.intersectionWith(Key) sedillard@gmail.com**20080516174305
This patch brings the type of IntMap.intersectionWith(Key) in line with that of Map.intersectionWith(Key).
was :: (a->b->a) -> IntMap a -> IntMap b -> IntMap a now :: (a->b->c) -> IntMap a -> IntMap b -> IntMap c
I don't have the test suite but it works fine in GHCi
*Data.IntMap> intersectionWith (,) (fromList $ zip [1..3] ['a'..'c']) (fromList $ zip [1..3] ['A'..'C']) fromList [(1,('a','A')),(2,('b','B')),(3,('c','C'))]
] { hunk ./Data/IntMap.hs 795 -intersectionWith :: (a -> b -> a) -> IntMap a -> IntMap b -> IntMap a +intersectionWith :: (a -> b -> c) -> IntMap a -> IntMap b -> IntMap c hunk ./Data/IntMap.hs 804 -intersectionWithKey :: (Key -> a -> b -> a) -> IntMap a -> IntMap b -> IntMap a +intersectionWithKey :: (Key -> a -> b -> c) -> IntMap a -> IntMap b -> IntMap c }
Context:
The rest of the 67K is context :)
On Fri, May 16, 2008 at 11:28 AM, Don Stewart
wrote: sedillard:
Hi,
This is a simple bug report, more or less. The type of Data.IntMap.intersectionWith is too restrictive. Presently (GHC 8.2, http://darcs.haskell.org/packages/containers/Data/) it's declared as (a->b->a) -> IntMap a -> IntMap b -> IntMap a, but if you just remove the type declarations it's inferred as (a->b->c) -> IntMap a -> IntMap b -> IntMap c. Similarly for intersectionWithKey. The more general a->b->c type is also the type of Data.Map.intersectionWith, and it's quite useful, such as (intersectionWith (,))
Can you submit a patch? This kind of thing comes up occasionally, and generalising the type is often safe and easy.
-- Don