-#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