@@ -481,7 +481,7 @@ newtype NonEmptyListE (e::E) (n::S) = NonEmptyListE { fromNonEmptyListE :: NonEm
481
481
deriving (Show , Eq , Generic )
482
482
483
483
newtype LiftE (a :: * ) (n :: S ) = LiftE { fromLiftE :: a }
484
- deriving (Show , Eq , Generic , Monoid , Semigroup )
484
+ deriving (Show , Eq , Ord , Generic , Monoid , Semigroup )
485
485
486
486
newtype ComposeE (f :: * -> * ) (e :: E ) (n :: S ) =
487
487
ComposeE { fromComposeE :: (f (e n )) }
@@ -3262,60 +3262,6 @@ instance HoistableB b => HoistableB (WithAttrB a b) where
3262
3262
3263
3263
-- Hoisting the map removes entries that are no longer in scope.
3264
3264
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
-
3319
3265
newtype NameMapE (c :: C ) (e :: E ) (n :: S ) = UnsafeNameMapE (RawNameMap (e n ))
3320
3266
deriving (Eq , Semigroup , Monoid , Store )
3321
3267
@@ -3353,6 +3299,11 @@ unionWithNameMapE f (UnsafeNameMapE raw1) (UnsafeNameMapE raw2) =
3353
3299
UnsafeNameMapE $ R. unionWith f raw1 raw2
3354
3300
{-# INLINE unionWithNameMapE #-}
3355
3301
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
+
3356
3307
traverseNameMapE :: (Applicative f ) => (e1 n -> f (e2 n ))
3357
3308
-> NameMapE c e1 n -> f (NameMapE c e2 n )
3358
3309
traverseNameMapE f (UnsafeNameMapE raw) = UnsafeNameMapE <$> traverse f raw
@@ -3379,6 +3330,13 @@ instance RenameE e => RenameE (NameMapE c e) where
3379
3330
instance HoistableE e => HoistableE (NameMapE c e ) where
3380
3331
freeVarsE = undefined
3381
3332
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
+
3382
3340
-- === E-kinded IR coercions ===
3383
3341
3384
3342
-- XXX: the intention is that we won't have to use this much
0 commit comments