Commit 63dde2e3 authored by Ian Lynagh's avatar Ian Lynagh
Browse files

Fix build with GHC 6.10

In GHC 6.10, intersectionWith is (a -> b -> a) instead of (a -> b -> c),
so we need to jump through some hoops to get the more general type.
parent 5b9c4a01
......@@ -183,7 +183,20 @@ plusUFM (UFM x) (UFM y) = UFM (M.union y x)
plusUFM_C f (UFM x) (UFM y) = UFM (M.unionWith f x y)
minusUFM (UFM x) (UFM y) = UFM (M.difference x y)
intersectUFM (UFM x) (UFM y) = UFM (M.intersection x y)
#if __GLASGOW_HASKELL__ >= 611
intersectUFM_C f (UFM x) (UFM y) = UFM (M.intersectionWith f x y)
#else
-- In GHC 6.10, intersectionWith is (a -> b -> a) instead of (a -> b -> c),
-- so we need to jump through some hoops to get the more general type.
intersectUFM_C f (UFM x) (UFM y) = UFM z
where z = let x' = M.map Left x
f' (Left a) b = Right (f a b)
f' (Right _) _ = panic "intersectUFM_C: f': Right"
z' = M.intersectionWith f' x' y
fromRight (Right a) = a
fromRight _ = panic "intersectUFM_C: Left"
in M.map fromRight z'
#endif
foldUFM k z (UFM m) = M.fold k z m
foldUFM_Directly k z (UFM m) = M.foldWithKey (k . getUnique) z m
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment