@@ -481,7 +481,7 @@ newtype NonEmptyListE (e::E) (n::S) = NonEmptyListE { fromNonEmptyListE :: NonEm
481481 deriving (Show , Eq , Generic )
482482
483483newtype LiftE (a :: * ) (n :: S ) = LiftE { fromLiftE :: a }
484- deriving (Show , Eq , Generic , Monoid , Semigroup )
484+ deriving (Show , Eq , Ord , Generic , Monoid , Semigroup )
485485
486486newtype ComposeE (f :: * -> * ) (e :: E ) (n :: S ) =
487487 ComposeE { fromComposeE :: (f (e n )) }
@@ -3262,60 +3262,6 @@ instance HoistableB b => HoistableB (WithAttrB a b) where
32623262
32633263-- Hoisting the map removes entries that are no longer in scope.
32643264
3265- newtype NameMap (c :: C ) (a :: * ) (n :: S ) = UnsafeNameMap (RawNameMap a )
3266- deriving (Eq , Semigroup , Monoid , Store )
3267-
3268- hoistFilterNameMap :: BindsNames b => b n l -> NameMap c a l -> NameMap c a n
3269- hoistFilterNameMap b (UnsafeNameMap raw) =
3270- UnsafeNameMap $ raw `R.difference` frag
3271- where UnsafeMakeScopeFrag frag = toScopeFrag b
3272- {-# INLINE hoistFilterNameMap #-}
3273-
3274- insertNameMap :: Name c n -> a -> NameMap c a n -> NameMap c a n
3275- insertNameMap (UnsafeMakeName n) x (UnsafeNameMap raw) = UnsafeNameMap $ R. insert n x raw
3276- {-# INLINE insertNameMap #-}
3277-
3278- lookupNameMap :: Name c n -> NameMap c a n -> Maybe a
3279- lookupNameMap (UnsafeMakeName n) (UnsafeNameMap raw) = R. lookup n raw
3280- {-# INLINE lookupNameMap #-}
3281-
3282- singletonNameMap :: Name c n -> a -> NameMap c a n
3283- singletonNameMap (UnsafeMakeName n) x = UnsafeNameMap $ R. singleton n x
3284- {-# INLINE singletonNameMap #-}
3285-
3286- toListNameMap :: NameMap c a n -> [(Name c n , a )]
3287- toListNameMap (UnsafeNameMap raw) = R. toList raw <&> \ (r, x) -> (UnsafeMakeName r, x)
3288- {-# INLINE toListNameMap #-}
3289-
3290- unionWithNameMap :: (a -> a -> a ) -> NameMap c a n -> NameMap c a n -> NameMap c a n
3291- unionWithNameMap f (UnsafeNameMap raw1) (UnsafeNameMap raw2) =
3292- UnsafeNameMap $ R. unionWith f raw1 raw2
3293- {-# INLINE unionWithNameMap #-}
3294-
3295- unionsWithNameMap :: (Foldable f ) => (a -> a -> a ) -> f (NameMap c a n ) -> NameMap c a n
3296- unionsWithNameMap func maps =
3297- foldl' (unionWithNameMap func) mempty maps
3298- {-# INLINE unionsWithNameMap #-}
3299-
3300- traverseNameMap :: (Applicative f ) => (a -> f b )
3301- -> NameMap c a n -> f (NameMap c b n )
3302- traverseNameMap f (UnsafeNameMap raw) = UnsafeNameMap <$> traverse f raw
3303- {-# INLINE traverseNameMap #-}
3304-
3305- mapNameMap :: (a -> b ) -> NameMap c a n -> (NameMap c b n )
3306- mapNameMap f (UnsafeNameMap raw) = UnsafeNameMap $ fmap f raw
3307- {-# INLINE mapNameMap #-}
3308-
3309- keysNameMap :: NameMap c a n -> [Name c n ]
3310- keysNameMap = map fst . toListNameMap
3311- {-# INLINE keysNameMap #-}
3312-
3313- keySetNameMap :: (Color c ) => NameMap c a n -> NameSet n
3314- keySetNameMap nmap = freeVarsE $ ListE $ keysNameMap nmap
3315-
3316- instance SinkableE (NameMap c a ) where
3317- sinkingProofE = undefined
3318-
33193265newtype NameMapE (c :: C ) (e :: E ) (n :: S ) = UnsafeNameMapE (RawNameMap (e n ))
33203266 deriving (Eq , Semigroup , Monoid , Store )
33213267
@@ -3353,6 +3299,11 @@ unionWithNameMapE f (UnsafeNameMapE raw1) (UnsafeNameMapE raw2) =
33533299 UnsafeNameMapE $ R. unionWith f raw1 raw2
33543300{-# INLINE unionWithNameMapE #-}
33553301
3302+ unionsWithNameMapE :: (Foldable f ) => (e n -> e n -> e n ) -> f (NameMapE c e n ) -> NameMapE c e n
3303+ unionsWithNameMapE func maps =
3304+ foldl' (unionWithNameMapE func) mempty maps
3305+ {-# INLINE unionsWithNameMapE #-}
3306+
33563307traverseNameMapE :: (Applicative f ) => (e1 n -> f (e2 n ))
33573308 -> NameMapE c e1 n -> f (NameMapE c e2 n )
33583309traverseNameMapE f (UnsafeNameMapE raw) = UnsafeNameMapE <$> traverse f raw
@@ -3379,6 +3330,13 @@ instance RenameE e => RenameE (NameMapE c e) where
33793330instance HoistableE e => HoistableE (NameMapE c e ) where
33803331 freeVarsE = undefined
33813332
3333+ type NameMap (c :: C ) (a :: * ) = NameMapE c (LiftE a )
3334+
3335+ hoistNameMap :: (BindsNames b , Show a )
3336+ => b n l -> NameMap c a l -> (NameMap c a n )
3337+ hoistNameMap b = ignoreHoistFailure . hoistNameMapE b
3338+ {-# INLINE hoistNameMap #-}
3339+
33823340-- === E-kinded IR coercions ===
33833341
33843342-- XXX: the intention is that we won't have to use this much
0 commit comments