Skip to content

Commit e855a09

Browse files
committed
Use type application in order to simplify rewrite rules
1 parent 0f60257 commit e855a09

File tree

1 file changed

+6
-23
lines changed

1 file changed

+6
-23
lines changed

vector/src/Data/Vector/Generic.hs

Lines changed: 6 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -2627,19 +2627,11 @@ unstreamPrimM :: (PrimMonad m, Vector v a) => MBundle m u a -> m (v a)
26272627
{-# INLINE_FUSED unstreamPrimM #-}
26282628
unstreamPrimM s = M.munstream s >>= unsafeFreeze
26292629

2630-
-- FIXME: the next two functions are only necessary for the specialisations
2631-
unstreamPrimM_IO :: Vector v a => MBundle IO u a -> IO (v a)
2632-
{-# INLINE unstreamPrimM_IO #-}
2633-
unstreamPrimM_IO = unstreamPrimM
2634-
2635-
unstreamPrimM_ST :: Vector v a => MBundle (ST s) u a -> ST s (v a)
2636-
{-# INLINE unstreamPrimM_ST #-}
2637-
unstreamPrimM_ST = unstreamPrimM
2638-
26392630
{-# RULES
26402631

2641-
"unstreamM[IO]" unstreamM = unstreamPrimM_IO
2642-
"unstreamM[ST]" unstreamM = unstreamPrimM_ST #-}
2632+
"unstreamM[IO]" unstreamM @IO = unstreamPrimM
2633+
"unstreamM[ST]" forall s. forall. unstreamM @(ST s) = unstreamPrimM
2634+
#-}
26432635

26442636

26452637

@@ -2699,14 +2691,6 @@ unsafeGeneratePrim :: (PrimMonad m, Vector v a) => Int -> (Int -> m a) -> m (v a
26992691
{-# INLINE unsafeGeneratePrim #-}
27002692
unsafeGeneratePrim n f = unsafeFreeze =<< M.generateM n f
27012693

2702-
generateA_IO :: (Vector v a) => Int -> (Int -> IO a) -> IO (v a)
2703-
{-# INLINE generateA_IO #-}
2704-
generateA_IO = unsafeGeneratePrim
2705-
2706-
generateA_ST :: (Vector v a) => Int -> (Int -> ST s a) -> ST s (v a)
2707-
{-# INLINE generateA_ST #-}
2708-
generateA_ST = unsafeGeneratePrim
2709-
27102694
-- Identity is used in lest for mapping over structures. So it's
27112695
-- relatively important case.
27122696
generateA_Identity :: (Vector v a) => Int -> (Int -> Identity a) -> Identity (v a)
@@ -2715,10 +2699,9 @@ generateA_Identity n f = Identity (generate n (runIdentity . f))
27152699

27162700

27172701
{-# RULES
2718-
2719-
"generateA[IO]" generateA = generateA_IO
2720-
"generateA[ST]" generateA = generateA_ST
2721-
"generateA[Identity]" generateA = generateA_Identity
2702+
"generateA[IO]" generateA @IO = unsafeGeneratePrim
2703+
"generateA[ST]" forall s. forall. generateA @(ST s) = unsafeGeneratePrim
2704+
"generateA[Identity]" generateA = generateA_Identity
27222705
#-}
27232706

27242707

0 commit comments

Comments
 (0)