Skip to content

Commit 2377c31

Browse files
committed
Inline liftEq for IntMap
So that GHC can optimize it for known functions such as in `sameKeys = liftEq (\_ _ -> True)`.
1 parent 586eb75 commit 2377c31

File tree

1 file changed

+7
-6
lines changed

1 file changed

+7
-6
lines changed

containers/src/Data/IntMap/Internal.hs

+7-6
Original file line numberDiff line numberDiff line change
@@ -3476,12 +3476,13 @@ equal _ _ = False
34763476

34773477
-- | @since 0.5.9
34783478
instance Eq1 IntMap where
3479-
liftEq eq (Bin p1 l1 r1) (Bin p2 l2 r2)
3480-
= (p1 == p2) && (liftEq eq l1 l2) && (liftEq eq r1 r2)
3481-
liftEq eq (Tip kx x) (Tip ky y)
3482-
= (kx == ky) && (eq x y)
3483-
liftEq _eq Nil Nil = True
3484-
liftEq _eq _ _ = False
3479+
liftEq eq = go
3480+
where
3481+
go (Bin p1 l1 r1) (Bin p2 l2 r2) = p1 == p2 && go l1 l2 && go r1 r2
3482+
go (Tip kx x) (Tip ky y) = kx == ky && eq x y
3483+
go Nil Nil = True
3484+
go _ _ = False
3485+
{-# INLINE liftEq #-}
34853486

34863487
{--------------------------------------------------------------------
34873488
Ord

0 commit comments

Comments
 (0)