yaya-containers 0.2.0.0 → 1.0.0.0
raw patch · 8 files changed
+385/−344 lines, 8 filesdep +yaya-unsafedep ~yayasetup-changedPVP ok
version bump matches the API change (PVP)
Dependencies added: yaya-unsafe
Dependency ranges changed: yaya
API changes (from Hackage documentation)
- Yaya.Containers.Pattern.IntMap: BinF :: Prefix -> Mask -> r -> r -> IntMapF a r
- Yaya.Containers.Pattern.IntMap: NilF :: IntMapF a r
- Yaya.Containers.Pattern.IntMap: TipF :: Key -> a -> IntMapF a r
- Yaya.Containers.Pattern.IntMap: data IntMapF a r
- Yaya.Containers.Pattern.IntMap: instance (GHC.Classes.Eq a, GHC.Classes.Eq r) => GHC.Classes.Eq (Yaya.Containers.Pattern.IntMap.IntMapF a r)
- Yaya.Containers.Pattern.IntMap: instance (GHC.Classes.Ord a, GHC.Classes.Ord r) => GHC.Classes.Ord (Yaya.Containers.Pattern.IntMap.IntMapF a r)
- Yaya.Containers.Pattern.IntMap: instance (GHC.Read.Read a, GHC.Read.Read r) => GHC.Read.Read (Yaya.Containers.Pattern.IntMap.IntMapF a r)
- Yaya.Containers.Pattern.IntMap: instance (GHC.Show.Show a, GHC.Show.Show r) => GHC.Show.Show (Yaya.Containers.Pattern.IntMap.IntMapF a r)
- Yaya.Containers.Pattern.IntMap: instance Data.Foldable.Foldable (Yaya.Containers.Pattern.IntMap.IntMapF a)
- Yaya.Containers.Pattern.IntMap: instance Data.Functor.Classes.Eq2 Yaya.Containers.Pattern.IntMap.IntMapF
- Yaya.Containers.Pattern.IntMap: instance Data.Functor.Classes.Ord2 Yaya.Containers.Pattern.IntMap.IntMapF
- Yaya.Containers.Pattern.IntMap: instance Data.Functor.Classes.Read2 Yaya.Containers.Pattern.IntMap.IntMapF
- Yaya.Containers.Pattern.IntMap: instance Data.Functor.Classes.Show2 Yaya.Containers.Pattern.IntMap.IntMapF
- Yaya.Containers.Pattern.IntMap: instance Data.Traversable.Traversable (Yaya.Containers.Pattern.IntMap.IntMapF a)
- Yaya.Containers.Pattern.IntMap: instance GHC.Base.Functor (Yaya.Containers.Pattern.IntMap.IntMapF a)
- Yaya.Containers.Pattern.IntMap: instance GHC.Classes.Eq a => Data.Functor.Classes.Eq1 (Yaya.Containers.Pattern.IntMap.IntMapF a)
- Yaya.Containers.Pattern.IntMap: instance GHC.Classes.Ord a => Data.Functor.Classes.Ord1 (Yaya.Containers.Pattern.IntMap.IntMapF a)
- Yaya.Containers.Pattern.IntMap: instance GHC.Generics.Generic (Yaya.Containers.Pattern.IntMap.IntMapF a r)
- Yaya.Containers.Pattern.IntMap: instance GHC.Generics.Generic1 (Yaya.Containers.Pattern.IntMap.IntMapF a)
- Yaya.Containers.Pattern.IntMap: instance GHC.Read.Read a => Data.Functor.Classes.Read1 (Yaya.Containers.Pattern.IntMap.IntMapF a)
- Yaya.Containers.Pattern.IntMap: instance GHC.Show.Show a => Data.Functor.Classes.Show1 (Yaya.Containers.Pattern.IntMap.IntMapF a)
- Yaya.Containers.Pattern.IntMap: instance Yaya.Fold.Projectable (->) (Data.IntMap.Internal.IntMap a) (Yaya.Containers.Pattern.IntMap.IntMapF a)
- Yaya.Containers.Pattern.IntMap: instance Yaya.Fold.Recursive (->) (Data.IntMap.Internal.IntMap a) (Yaya.Containers.Pattern.IntMap.IntMapF a)
- Yaya.Containers.Pattern.IntMap: instance Yaya.Fold.Steppable (->) (Data.IntMap.Internal.IntMap a) (Yaya.Containers.Pattern.IntMap.IntMapF a)
- Yaya.Containers.Pattern.IntSet: BinF :: Prefix -> Mask -> r -> r -> IntSetF r
- Yaya.Containers.Pattern.IntSet: NilF :: IntSetF r
- Yaya.Containers.Pattern.IntSet: TipF :: Int -> BitMap -> IntSetF r
- Yaya.Containers.Pattern.IntSet: data IntSetF r
- Yaya.Containers.Pattern.IntSet: instance Data.Foldable.Foldable Yaya.Containers.Pattern.IntSet.IntSetF
- Yaya.Containers.Pattern.IntSet: instance Data.Functor.Classes.Eq1 Yaya.Containers.Pattern.IntSet.IntSetF
- Yaya.Containers.Pattern.IntSet: instance Data.Functor.Classes.Ord1 Yaya.Containers.Pattern.IntSet.IntSetF
- Yaya.Containers.Pattern.IntSet: instance Data.Functor.Classes.Read1 Yaya.Containers.Pattern.IntSet.IntSetF
- Yaya.Containers.Pattern.IntSet: instance Data.Functor.Classes.Show1 Yaya.Containers.Pattern.IntSet.IntSetF
- Yaya.Containers.Pattern.IntSet: instance Data.Traversable.Traversable Yaya.Containers.Pattern.IntSet.IntSetF
- Yaya.Containers.Pattern.IntSet: instance GHC.Base.Functor Yaya.Containers.Pattern.IntSet.IntSetF
- Yaya.Containers.Pattern.IntSet: instance GHC.Classes.Eq r => GHC.Classes.Eq (Yaya.Containers.Pattern.IntSet.IntSetF r)
- Yaya.Containers.Pattern.IntSet: instance GHC.Classes.Ord r => GHC.Classes.Ord (Yaya.Containers.Pattern.IntSet.IntSetF r)
- Yaya.Containers.Pattern.IntSet: instance GHC.Generics.Generic (Yaya.Containers.Pattern.IntSet.IntSetF r)
- Yaya.Containers.Pattern.IntSet: instance GHC.Generics.Generic1 Yaya.Containers.Pattern.IntSet.IntSetF
- Yaya.Containers.Pattern.IntSet: instance GHC.Read.Read r => GHC.Read.Read (Yaya.Containers.Pattern.IntSet.IntSetF r)
- Yaya.Containers.Pattern.IntSet: instance GHC.Show.Show r => GHC.Show.Show (Yaya.Containers.Pattern.IntSet.IntSetF r)
- Yaya.Containers.Pattern.IntSet: instance Yaya.Fold.Projectable (->) Data.IntSet.Internal.IntSet Yaya.Containers.Pattern.IntSet.IntSetF
- Yaya.Containers.Pattern.IntSet: instance Yaya.Fold.Recursive (->) Data.IntSet.Internal.IntSet Yaya.Containers.Pattern.IntSet.IntSetF
- Yaya.Containers.Pattern.IntSet: instance Yaya.Fold.Steppable (->) Data.IntSet.Internal.IntSet Yaya.Containers.Pattern.IntSet.IntSetF
- Yaya.Containers.Pattern.Map: BinF :: Size -> k -> ~v -> r -> r -> MapF k v r
- Yaya.Containers.Pattern.Map: TipF :: MapF k v r
- Yaya.Containers.Pattern.Map: compareMapF :: (k -> k' -> Ordering) -> (v -> v' -> Ordering) -> (r -> r' -> Ordering) -> MapF k v r -> MapF k' v' r' -> Ordering
- Yaya.Containers.Pattern.Map: data MapF k v r
- Yaya.Containers.Pattern.Map: eqMapF :: (k -> k' -> Bool) -> (v -> v' -> Bool) -> (r -> r' -> Bool) -> MapF k v r -> MapF k' v' r' -> Bool
- Yaya.Containers.Pattern.Map: instance (GHC.Classes.Eq k, GHC.Classes.Eq v) => Data.Functor.Classes.Eq1 (Yaya.Containers.Pattern.Map.MapF k v)
- Yaya.Containers.Pattern.Map: instance (GHC.Classes.Eq k, GHC.Classes.Eq v, GHC.Classes.Eq r) => GHC.Classes.Eq (Yaya.Containers.Pattern.Map.MapF k v r)
- Yaya.Containers.Pattern.Map: instance (GHC.Classes.Ord k, GHC.Classes.Ord v) => Data.Functor.Classes.Ord1 (Yaya.Containers.Pattern.Map.MapF k v)
- Yaya.Containers.Pattern.Map: instance (GHC.Classes.Ord k, GHC.Classes.Ord v, GHC.Classes.Ord r) => GHC.Classes.Ord (Yaya.Containers.Pattern.Map.MapF k v r)
- Yaya.Containers.Pattern.Map: instance (GHC.Read.Read k, GHC.Read.Read v) => Data.Functor.Classes.Read1 (Yaya.Containers.Pattern.Map.MapF k v)
- Yaya.Containers.Pattern.Map: instance (GHC.Read.Read k, GHC.Read.Read v, GHC.Read.Read r) => GHC.Read.Read (Yaya.Containers.Pattern.Map.MapF k v r)
- Yaya.Containers.Pattern.Map: instance (GHC.Show.Show k, GHC.Show.Show v) => Data.Functor.Classes.Show1 (Yaya.Containers.Pattern.Map.MapF k v)
- Yaya.Containers.Pattern.Map: instance (GHC.Show.Show k, GHC.Show.Show v, GHC.Show.Show r) => GHC.Show.Show (Yaya.Containers.Pattern.Map.MapF k v r)
- Yaya.Containers.Pattern.Map: instance Data.Foldable.Foldable (Yaya.Containers.Pattern.Map.MapF k v)
- Yaya.Containers.Pattern.Map: instance Data.Traversable.Traversable (Yaya.Containers.Pattern.Map.MapF k v)
- Yaya.Containers.Pattern.Map: instance GHC.Base.Functor (Yaya.Containers.Pattern.Map.MapF k v)
- Yaya.Containers.Pattern.Map: instance GHC.Classes.Eq k => Data.Functor.Classes.Eq2 (Yaya.Containers.Pattern.Map.MapF k)
- Yaya.Containers.Pattern.Map: instance GHC.Classes.Ord k => Data.Functor.Classes.Ord2 (Yaya.Containers.Pattern.Map.MapF k)
- Yaya.Containers.Pattern.Map: instance GHC.Generics.Generic (Yaya.Containers.Pattern.Map.MapF k v r)
- Yaya.Containers.Pattern.Map: instance GHC.Generics.Generic1 (Yaya.Containers.Pattern.Map.MapF k v)
- Yaya.Containers.Pattern.Map: instance GHC.Read.Read k => Data.Functor.Classes.Read2 (Yaya.Containers.Pattern.Map.MapF k)
- Yaya.Containers.Pattern.Map: instance GHC.Show.Show k => Data.Functor.Classes.Show2 (Yaya.Containers.Pattern.Map.MapF k)
- Yaya.Containers.Pattern.Map: instance Yaya.Fold.Projectable (->) (Data.Map.Internal.Map k v) (Yaya.Containers.Pattern.Map.MapF k v)
- Yaya.Containers.Pattern.Map: instance Yaya.Fold.Recursive (->) (Data.Map.Internal.Map k v) (Yaya.Containers.Pattern.Map.MapF k v)
- Yaya.Containers.Pattern.Map: instance Yaya.Fold.Steppable (->) (Data.Map.Internal.Map k v) (Yaya.Containers.Pattern.Map.MapF k v)
- Yaya.Containers.Pattern.Map: readMapFPrec :: ReadPrec k -> ReadPrec v -> ReadPrec r -> ReadPrec (MapF k v r)
- Yaya.Containers.Pattern.Map: showsMapFPrec :: (Int -> k -> ShowS) -> (Int -> v -> ShowS) -> (Int -> r -> ShowS) -> Int -> MapF k v r -> ShowS
- Yaya.Containers.Pattern.Set: BinF :: Size -> a -> r -> r -> SetF a r
- Yaya.Containers.Pattern.Set: TipF :: SetF a r
- Yaya.Containers.Pattern.Set: data SetF a r
- Yaya.Containers.Pattern.Set: instance (GHC.Classes.Eq a, GHC.Classes.Eq r) => GHC.Classes.Eq (Yaya.Containers.Pattern.Set.SetF a r)
- Yaya.Containers.Pattern.Set: instance (GHC.Classes.Ord a, GHC.Classes.Ord r) => GHC.Classes.Ord (Yaya.Containers.Pattern.Set.SetF a r)
- Yaya.Containers.Pattern.Set: instance (GHC.Read.Read a, GHC.Read.Read r) => GHC.Read.Read (Yaya.Containers.Pattern.Set.SetF a r)
- Yaya.Containers.Pattern.Set: instance (GHC.Show.Show a, GHC.Show.Show r) => GHC.Show.Show (Yaya.Containers.Pattern.Set.SetF a r)
- Yaya.Containers.Pattern.Set: instance Data.Foldable.Foldable (Yaya.Containers.Pattern.Set.SetF a)
- Yaya.Containers.Pattern.Set: instance Data.Functor.Classes.Eq2 Yaya.Containers.Pattern.Set.SetF
- Yaya.Containers.Pattern.Set: instance Data.Functor.Classes.Ord2 Yaya.Containers.Pattern.Set.SetF
- Yaya.Containers.Pattern.Set: instance Data.Functor.Classes.Read2 Yaya.Containers.Pattern.Set.SetF
- Yaya.Containers.Pattern.Set: instance Data.Functor.Classes.Show2 Yaya.Containers.Pattern.Set.SetF
- Yaya.Containers.Pattern.Set: instance Data.Traversable.Traversable (Yaya.Containers.Pattern.Set.SetF a)
- Yaya.Containers.Pattern.Set: instance GHC.Base.Functor (Yaya.Containers.Pattern.Set.SetF a)
- Yaya.Containers.Pattern.Set: instance GHC.Classes.Eq a => Data.Functor.Classes.Eq1 (Yaya.Containers.Pattern.Set.SetF a)
- Yaya.Containers.Pattern.Set: instance GHC.Classes.Ord a => Data.Functor.Classes.Ord1 (Yaya.Containers.Pattern.Set.SetF a)
- Yaya.Containers.Pattern.Set: instance GHC.Generics.Generic (Yaya.Containers.Pattern.Set.SetF a r)
- Yaya.Containers.Pattern.Set: instance GHC.Generics.Generic1 (Yaya.Containers.Pattern.Set.SetF a)
- Yaya.Containers.Pattern.Set: instance GHC.Read.Read a => Data.Functor.Classes.Read1 (Yaya.Containers.Pattern.Set.SetF a)
- Yaya.Containers.Pattern.Set: instance GHC.Show.Show a => Data.Functor.Classes.Show1 (Yaya.Containers.Pattern.Set.SetF a)
- Yaya.Containers.Pattern.Set: instance Yaya.Fold.Projectable (->) (Data.Set.Internal.Set a) (Yaya.Containers.Pattern.Set.SetF a)
- Yaya.Containers.Pattern.Set: instance Yaya.Fold.Recursive (->) (Data.Set.Internal.Set a) (Yaya.Containers.Pattern.Set.SetF a)
- Yaya.Containers.Pattern.Set: instance Yaya.Fold.Steppable (->) (Data.Set.Internal.Set a) (Yaya.Containers.Pattern.Set.SetF a)
+ Yaya.Containers.Pattern.IntMap: Bin :: Prefix -> Mask -> r -> r -> IntMap a r
+ Yaya.Containers.Pattern.IntMap: Nil :: IntMap a r
+ Yaya.Containers.Pattern.IntMap: Tip :: Key -> a -> IntMap a r
+ Yaya.Containers.Pattern.IntMap: data IntMap a r
+ Yaya.Containers.Pattern.IntMap: instance (GHC.Classes.Eq a, GHC.Classes.Eq r) => GHC.Classes.Eq (Yaya.Containers.Pattern.IntMap.IntMap a r)
+ Yaya.Containers.Pattern.IntMap: instance (GHC.Classes.Ord a, GHC.Classes.Ord r) => GHC.Classes.Ord (Yaya.Containers.Pattern.IntMap.IntMap a r)
+ Yaya.Containers.Pattern.IntMap: instance (GHC.Read.Read a, GHC.Read.Read r) => GHC.Read.Read (Yaya.Containers.Pattern.IntMap.IntMap a r)
+ Yaya.Containers.Pattern.IntMap: instance (GHC.Show.Show a, GHC.Show.Show r) => GHC.Show.Show (Yaya.Containers.Pattern.IntMap.IntMap a r)
+ Yaya.Containers.Pattern.IntMap: instance Data.Foldable.Foldable (Yaya.Containers.Pattern.IntMap.IntMap a)
+ Yaya.Containers.Pattern.IntMap: instance Data.Functor.Classes.Eq2 Yaya.Containers.Pattern.IntMap.IntMap
+ Yaya.Containers.Pattern.IntMap: instance Data.Functor.Classes.Ord2 Yaya.Containers.Pattern.IntMap.IntMap
+ Yaya.Containers.Pattern.IntMap: instance Data.Functor.Classes.Read2 Yaya.Containers.Pattern.IntMap.IntMap
+ Yaya.Containers.Pattern.IntMap: instance Data.Functor.Classes.Show2 Yaya.Containers.Pattern.IntMap.IntMap
+ Yaya.Containers.Pattern.IntMap: instance Data.Traversable.Traversable (Yaya.Containers.Pattern.IntMap.IntMap a)
+ Yaya.Containers.Pattern.IntMap: instance GHC.Base.Functor (Yaya.Containers.Pattern.IntMap.IntMap a)
+ Yaya.Containers.Pattern.IntMap: instance GHC.Classes.Eq a => Data.Functor.Classes.Eq1 (Yaya.Containers.Pattern.IntMap.IntMap a)
+ Yaya.Containers.Pattern.IntMap: instance GHC.Classes.Ord a => Data.Functor.Classes.Ord1 (Yaya.Containers.Pattern.IntMap.IntMap a)
+ Yaya.Containers.Pattern.IntMap: instance GHC.Generics.Generic (Yaya.Containers.Pattern.IntMap.IntMap a r)
+ Yaya.Containers.Pattern.IntMap: instance GHC.Generics.Generic1 (Yaya.Containers.Pattern.IntMap.IntMap a)
+ Yaya.Containers.Pattern.IntMap: instance GHC.Read.Read a => Data.Functor.Classes.Read1 (Yaya.Containers.Pattern.IntMap.IntMap a)
+ Yaya.Containers.Pattern.IntMap: instance GHC.Show.Show a => Data.Functor.Classes.Show1 (Yaya.Containers.Pattern.IntMap.IntMap a)
+ Yaya.Containers.Pattern.IntMap: instance Yaya.Fold.Projectable (->) (Data.IntMap.Internal.IntMap a) (Yaya.Containers.Pattern.IntMap.IntMap a)
+ Yaya.Containers.Pattern.IntMap: instance Yaya.Fold.Recursive (->) (Data.IntMap.Internal.IntMap a) (Yaya.Containers.Pattern.IntMap.IntMap a)
+ Yaya.Containers.Pattern.IntMap: instance Yaya.Fold.Steppable (->) (Data.IntMap.Internal.IntMap a) (Yaya.Containers.Pattern.IntMap.IntMap a)
+ Yaya.Containers.Pattern.IntSet: Bin :: Prefix -> Mask -> r -> r -> IntSet r
+ Yaya.Containers.Pattern.IntSet: Nil :: IntSet r
+ Yaya.Containers.Pattern.IntSet: Tip :: Int -> BitMap -> IntSet r
+ Yaya.Containers.Pattern.IntSet: data IntSet r
+ Yaya.Containers.Pattern.IntSet: instance Data.Foldable.Foldable Yaya.Containers.Pattern.IntSet.IntSet
+ Yaya.Containers.Pattern.IntSet: instance Data.Functor.Classes.Eq1 Yaya.Containers.Pattern.IntSet.IntSet
+ Yaya.Containers.Pattern.IntSet: instance Data.Functor.Classes.Ord1 Yaya.Containers.Pattern.IntSet.IntSet
+ Yaya.Containers.Pattern.IntSet: instance Data.Functor.Classes.Read1 Yaya.Containers.Pattern.IntSet.IntSet
+ Yaya.Containers.Pattern.IntSet: instance Data.Functor.Classes.Show1 Yaya.Containers.Pattern.IntSet.IntSet
+ Yaya.Containers.Pattern.IntSet: instance Data.Traversable.Traversable Yaya.Containers.Pattern.IntSet.IntSet
+ Yaya.Containers.Pattern.IntSet: instance GHC.Base.Functor Yaya.Containers.Pattern.IntSet.IntSet
+ Yaya.Containers.Pattern.IntSet: instance GHC.Classes.Eq r => GHC.Classes.Eq (Yaya.Containers.Pattern.IntSet.IntSet r)
+ Yaya.Containers.Pattern.IntSet: instance GHC.Classes.Ord r => GHC.Classes.Ord (Yaya.Containers.Pattern.IntSet.IntSet r)
+ Yaya.Containers.Pattern.IntSet: instance GHC.Generics.Generic (Yaya.Containers.Pattern.IntSet.IntSet r)
+ Yaya.Containers.Pattern.IntSet: instance GHC.Generics.Generic1 Yaya.Containers.Pattern.IntSet.IntSet
+ Yaya.Containers.Pattern.IntSet: instance GHC.Read.Read r => GHC.Read.Read (Yaya.Containers.Pattern.IntSet.IntSet r)
+ Yaya.Containers.Pattern.IntSet: instance GHC.Show.Show r => GHC.Show.Show (Yaya.Containers.Pattern.IntSet.IntSet r)
+ Yaya.Containers.Pattern.IntSet: instance Yaya.Fold.Projectable (->) Data.IntSet.Internal.IntSet Yaya.Containers.Pattern.IntSet.IntSet
+ Yaya.Containers.Pattern.IntSet: instance Yaya.Fold.Recursive (->) Data.IntSet.Internal.IntSet Yaya.Containers.Pattern.IntSet.IntSet
+ Yaya.Containers.Pattern.IntSet: instance Yaya.Fold.Steppable (->) Data.IntSet.Internal.IntSet Yaya.Containers.Pattern.IntSet.IntSet
+ Yaya.Containers.Pattern.Map: Bin :: Size -> k -> ~v -> r -> r -> Map k v r
+ Yaya.Containers.Pattern.Map: Tip :: Map k v r
+ Yaya.Containers.Pattern.Map: compareMap :: (k -> k' -> Ordering) -> (v -> v' -> Ordering) -> (r -> r' -> Ordering) -> Map k v r -> Map k' v' r' -> Ordering
+ Yaya.Containers.Pattern.Map: data Map k v r
+ Yaya.Containers.Pattern.Map: eqMap :: (k -> k' -> Bool) -> (v -> v' -> Bool) -> (r -> r' -> Bool) -> Map k v r -> Map k' v' r' -> Bool
+ Yaya.Containers.Pattern.Map: instance (GHC.Classes.Eq k, GHC.Classes.Eq v) => Data.Functor.Classes.Eq1 (Yaya.Containers.Pattern.Map.Map k v)
+ Yaya.Containers.Pattern.Map: instance (GHC.Classes.Eq k, GHC.Classes.Eq v, GHC.Classes.Eq r) => GHC.Classes.Eq (Yaya.Containers.Pattern.Map.Map k v r)
+ Yaya.Containers.Pattern.Map: instance (GHC.Classes.Ord k, GHC.Classes.Ord v) => Data.Functor.Classes.Ord1 (Yaya.Containers.Pattern.Map.Map k v)
+ Yaya.Containers.Pattern.Map: instance (GHC.Classes.Ord k, GHC.Classes.Ord v, GHC.Classes.Ord r) => GHC.Classes.Ord (Yaya.Containers.Pattern.Map.Map k v r)
+ Yaya.Containers.Pattern.Map: instance (GHC.Read.Read k, GHC.Read.Read v) => Data.Functor.Classes.Read1 (Yaya.Containers.Pattern.Map.Map k v)
+ Yaya.Containers.Pattern.Map: instance (GHC.Read.Read k, GHC.Read.Read v, GHC.Read.Read r) => GHC.Read.Read (Yaya.Containers.Pattern.Map.Map k v r)
+ Yaya.Containers.Pattern.Map: instance (GHC.Show.Show k, GHC.Show.Show v) => Data.Functor.Classes.Show1 (Yaya.Containers.Pattern.Map.Map k v)
+ Yaya.Containers.Pattern.Map: instance (GHC.Show.Show k, GHC.Show.Show v, GHC.Show.Show r) => GHC.Show.Show (Yaya.Containers.Pattern.Map.Map k v r)
+ Yaya.Containers.Pattern.Map: instance Data.Foldable.Foldable (Yaya.Containers.Pattern.Map.Map k v)
+ Yaya.Containers.Pattern.Map: instance Data.Traversable.Traversable (Yaya.Containers.Pattern.Map.Map k v)
+ Yaya.Containers.Pattern.Map: instance GHC.Base.Functor (Yaya.Containers.Pattern.Map.Map k v)
+ Yaya.Containers.Pattern.Map: instance GHC.Classes.Eq k => Data.Functor.Classes.Eq2 (Yaya.Containers.Pattern.Map.Map k)
+ Yaya.Containers.Pattern.Map: instance GHC.Classes.Ord k => Data.Functor.Classes.Ord2 (Yaya.Containers.Pattern.Map.Map k)
+ Yaya.Containers.Pattern.Map: instance GHC.Generics.Generic (Yaya.Containers.Pattern.Map.Map k v r)
+ Yaya.Containers.Pattern.Map: instance GHC.Generics.Generic1 (Yaya.Containers.Pattern.Map.Map k v)
+ Yaya.Containers.Pattern.Map: instance GHC.Read.Read k => Data.Functor.Classes.Read2 (Yaya.Containers.Pattern.Map.Map k)
+ Yaya.Containers.Pattern.Map: instance GHC.Show.Show k => Data.Functor.Classes.Show2 (Yaya.Containers.Pattern.Map.Map k)
+ Yaya.Containers.Pattern.Map: instance Yaya.Fold.Projectable (->) (Data.Map.Internal.Map k v) (Yaya.Containers.Pattern.Map.Map k v)
+ Yaya.Containers.Pattern.Map: instance Yaya.Fold.Recursive (->) (Data.Map.Internal.Map k v) (Yaya.Containers.Pattern.Map.Map k v)
+ Yaya.Containers.Pattern.Map: instance Yaya.Fold.Steppable (->) (Data.Map.Internal.Map k v) (Yaya.Containers.Pattern.Map.Map k v)
+ Yaya.Containers.Pattern.Map: readMapPrec :: ReadPrec k -> ReadPrec v -> ReadPrec r -> ReadPrec (Map k v r)
+ Yaya.Containers.Pattern.Map: showsMapPrec :: (Int -> k -> ShowS) -> (Int -> v -> ShowS) -> (Int -> r -> ShowS) -> Int -> Map k v r -> ShowS
+ Yaya.Containers.Pattern.Set: Bin :: Size -> a -> r -> r -> Set a r
+ Yaya.Containers.Pattern.Set: Tip :: Set a r
+ Yaya.Containers.Pattern.Set: data Set a r
+ Yaya.Containers.Pattern.Set: instance (GHC.Classes.Eq a, GHC.Classes.Eq r) => GHC.Classes.Eq (Yaya.Containers.Pattern.Set.Set a r)
+ Yaya.Containers.Pattern.Set: instance (GHC.Classes.Ord a, GHC.Classes.Ord r) => GHC.Classes.Ord (Yaya.Containers.Pattern.Set.Set a r)
+ Yaya.Containers.Pattern.Set: instance (GHC.Read.Read a, GHC.Read.Read r) => GHC.Read.Read (Yaya.Containers.Pattern.Set.Set a r)
+ Yaya.Containers.Pattern.Set: instance (GHC.Show.Show a, GHC.Show.Show r) => GHC.Show.Show (Yaya.Containers.Pattern.Set.Set a r)
+ Yaya.Containers.Pattern.Set: instance Data.Foldable.Foldable (Yaya.Containers.Pattern.Set.Set a)
+ Yaya.Containers.Pattern.Set: instance Data.Functor.Classes.Eq2 Yaya.Containers.Pattern.Set.Set
+ Yaya.Containers.Pattern.Set: instance Data.Functor.Classes.Ord2 Yaya.Containers.Pattern.Set.Set
+ Yaya.Containers.Pattern.Set: instance Data.Functor.Classes.Read2 Yaya.Containers.Pattern.Set.Set
+ Yaya.Containers.Pattern.Set: instance Data.Functor.Classes.Show2 Yaya.Containers.Pattern.Set.Set
+ Yaya.Containers.Pattern.Set: instance Data.Traversable.Traversable (Yaya.Containers.Pattern.Set.Set a)
+ Yaya.Containers.Pattern.Set: instance GHC.Base.Functor (Yaya.Containers.Pattern.Set.Set a)
+ Yaya.Containers.Pattern.Set: instance GHC.Classes.Eq a => Data.Functor.Classes.Eq1 (Yaya.Containers.Pattern.Set.Set a)
+ Yaya.Containers.Pattern.Set: instance GHC.Classes.Ord a => Data.Functor.Classes.Ord1 (Yaya.Containers.Pattern.Set.Set a)
+ Yaya.Containers.Pattern.Set: instance GHC.Generics.Generic (Yaya.Containers.Pattern.Set.Set a r)
+ Yaya.Containers.Pattern.Set: instance GHC.Generics.Generic1 (Yaya.Containers.Pattern.Set.Set a)
+ Yaya.Containers.Pattern.Set: instance GHC.Read.Read a => Data.Functor.Classes.Read1 (Yaya.Containers.Pattern.Set.Set a)
+ Yaya.Containers.Pattern.Set: instance GHC.Show.Show a => Data.Functor.Classes.Show1 (Yaya.Containers.Pattern.Set.Set a)
+ Yaya.Containers.Pattern.Set: instance Yaya.Fold.Projectable (->) (Data.Set.Internal.Set a) (Yaya.Containers.Pattern.Set.Set a)
+ Yaya.Containers.Pattern.Set: instance Yaya.Fold.Recursive (->) (Data.Set.Internal.Set a) (Yaya.Containers.Pattern.Set.Set a)
+ Yaya.Containers.Pattern.Set: instance Yaya.Fold.Steppable (->) (Data.Set.Internal.Set a) (Yaya.Containers.Pattern.Set.Set a)
Files
- CHANGELOG.md +16/−5
- Setup.hs +0/−5
- docs/license-report.md +31/−39
- src/Yaya/Containers/Pattern/IntMap.hs +95/−82
- src/Yaya/Containers/Pattern/IntSet.hs +84/−79
- src/Yaya/Containers/Pattern/Map.hs +87/−75
- src/Yaya/Containers/Pattern/Set.hs +62/−54
- yaya-containers.cabal +10/−5
CHANGELOG.md view
@@ -5,6 +5,16 @@ The format is based on [Keep a Changelog 1.1](https://keepachangelog.com/en/1.1.0/), and this project adheres to the [Haskell Package Versioning Policy](https://pvp.haskell.org/). +## [1.0.0.0] - 2026-04-22++### Added++- support for yaya-1.0.0.0 and yaya-unsafe-1.0.0.0++### Changed++- Types, constructors, and functions no longer have an `F` suffix (for example, `TipF` is now `Tip`). The expectation is that if both this and the `containers` identifiers of the same name are needed in the same module, qualified imports should be used.+ ## [0.2.0.0] - 2026-01-18 ### Added@@ -42,9 +52,10 @@ - initial release of this package -[0.2.0.0]: https://github.com/sellout/no-recursion/compare/v3.2.3...v4.0.0-[0.1.2.2]: https://github.com/sellout/no-recursion/compare/v3.2.1...v3.2.3-[0.1.2.1]: https://github.com/sellout/no-recursion/compare/v3.1.0...v3.2.1-[0.1.2.0]: https://github.com/sellout/no-recursion/compare/v3.0.0...v3.1.0-[0.1.1.0]: https://github.com/sellout/no-recursion/compare/v1.0.0...v3.0.0+[1.0.0.0]: https://github.com/sellout/yaya/compare/v4.0.0...v5.0.0+[0.2.0.0]: https://github.com/sellout/yaya/compare/v3.2.3...v4.0.0+[0.1.2.2]: https://github.com/sellout/yaya/compare/v3.2.1...v3.2.3+[0.1.2.1]: https://github.com/sellout/yaya/compare/v3.1.0...v3.2.1+[0.1.2.0]: https://github.com/sellout/yaya/compare/v3.0.0...v3.1.0+[0.1.1.0]: https://github.com/sellout/yaya/compare/v1.0.0...v3.0.0 [0.1.0.2]: https://github.com/sellout/yaya/releases/tag/v1.0.0
Setup.hs view
@@ -1,17 +1,12 @@ -- __NB__: `custom-setup` doesn’t have any way to specify extensions or options, -- so any we want need to be specified here.-{-# LANGUAGE CPP #-} {-# LANGUAGE PackageImports #-} {-# LANGUAGE Unsafe #-} {-# LANGUAGE NoImplicitPrelude #-}-#if MIN_VERSION_GLASGOW_HASKELL(8, 0, 0, 0) {-# OPTIONS_GHC -Weverything #-} -- Warns even when `Unsafe` is explicit, not inferred. See -- https://gitlab.haskell.org/ghc/ghc/-/issues/16689 {-# OPTIONS_GHC -Wno-unsafe #-}-#else-{-# OPTIONS_GHC -Wall #-}-#endif module Main (main) where
docs/license-report.md view
@@ -9,33 +9,32 @@ | Name | Version | [SPDX](https://spdx.org/licenses/) License Id | Description | Also depended upon by | | --- | --- | --- | --- | --- | | **`base`** | [`4.20.0.0`](http://hackage.haskell.org/package/base-4.20.0.0) | [`BSD-3-Clause`](http://hackage.haskell.org/package/base-4.20.0.0/src/LICENSE) | Core data structures and operations | *(core library)* |-| **`containers`** | [`0.7`](http://hackage.haskell.org/package/containers-0.7) | [`BSD-3-Clause`](http://hackage.haskell.org/package/containers-0.7/src/LICENSE) | Assorted concrete container types | `adjunctions`, `bifunctors`, `binary`, `comonad`, `free`, `ghc`, `ghc-boot`, `ghc-heap`, `ghci`, `hashable`, `hpc`, `indexed-traversable`, `invariant`, `lens`, `parallel`, `semigroupoids`, `th-abstraction` |-| `no-recursion` | [`0.4.0.0`](http://hackage.haskell.org/package/no-recursion-0.4.0.0) | [`(AGPL-3.0-only WITH Universal-FOSS-exception-1.0 OR LicenseRef-commercial)`](http://hackage.haskell.org/package/no-recursion-0.4.0.0/src/LICENSE) | A GHC plugin to remove support for recursion | `yaya` |-| `yaya` | [`0.7.0.0`](http://hackage.haskell.org/package/yaya-0.7.0.0) | *MISSING* | *MISSING* | |+| **`containers`** | [`0.7`](http://hackage.haskell.org/package/containers-0.7) | [`BSD-3-Clause`](http://hackage.haskell.org/package/containers-0.7/src/LICENSE) | Assorted concrete container types | `adjunctions`, `bifunctors`, `binary`, `comonad`, `free`, `ghc`, `ghc-boot`, `ghc-heap`, `ghci`, `hashable`, `hpc`, `indexed-traversable`, `invariant`, `semigroupoids`, `th-abstraction` |+| `no-recursion` | [`0.4.0.0`](http://hackage.haskell.org/package/no-recursion-0.4.0.0) | [`(AGPL-3.0-only WITH Universal-FOSS-exception-1.0 OR LicenseRef-commercial)`](http://hackage.haskell.org/package/no-recursion-0.4.0.0/src/LICENSE) | A GHC plugin to remove support for recursion | `yaya`, `yaya-unsafe` |+| `yaya` | [`1.0.0.0`](http://hackage.haskell.org/package/yaya-1.0.0.0) | *MISSING* | *MISSING* | `yaya-unsafe` |+| `yaya-unsafe` | [`1.0.0.0`](http://hackage.haskell.org/package/yaya-unsafe-1.0.0.0) | *MISSING* | *MISSING* | | ## Indirect transitive dependencies | Name | Version | [SPDX](https://spdx.org/licenses/) License Id | Description | Depended upon by | | --- | --- | --- | --- | --- |-| `OneTuple` | [`0.4.2.1`](http://hackage.haskell.org/package/OneTuple-0.4.2.1) | [`BSD-3-Clause`](http://hackage.haskell.org/package/OneTuple-0.4.2.1/src/LICENSE) | Singleton Tuple | `indexed-traversable-instances` | | `StateVar` | [`1.2.2`](http://hackage.haskell.org/package/StateVar-1.2.2) | [`BSD-3-Clause`](http://hackage.haskell.org/package/StateVar-1.2.2/src/LICENSE) | State variables | `contravariant`, `invariant` | | `adjunctions` | [`4.4.4`](http://hackage.haskell.org/package/adjunctions-4.4.4) | [`BSD-2-Clause`](http://hackage.haskell.org/package/adjunctions-4.4.4/src/LICENSE) | Adjunctions and representable functors | `kan-extensions` |-| **`array`** | [`0.5.7.0`](http://hackage.haskell.org/package/array-0.5.7.0) | [`BSD-3-Clause`](http://hackage.haskell.org/package/array-0.5.7.0/src/LICENSE) | Mutable and immutable arrays | `binary`, `containers`, `deepseq`, `ghc`, `ghci`, `indexed-traversable`, `invariant`, `lens`, `parallel`, `stm`, `text` |-| `assoc` | [`1.1.1`](http://hackage.haskell.org/package/assoc-1.1.1) | [`BSD-3-Clause`](http://hackage.haskell.org/package/assoc-1.1.1/src/LICENSE) | swap and assoc: Symmetric and Semigroupy Bifunctors | `bifunctors`, `lens`, `strict`, `these` |-| `base-orphans` | [`0.9.4`](http://hackage.haskell.org/package/base-orphans-0.9.4) | [`MIT`](http://hackage.haskell.org/package/base-orphans-0.9.4/src/LICENSE) | Backwards-compatible orphan instances for base | `lens`, `profunctors`, `semigroupoids`, `transformers-base` |-| `bifunctors` | [`5.6.3`](http://hackage.haskell.org/package/bifunctors-5.6.3) | [`BSD-3-Clause`](http://hackage.haskell.org/package/bifunctors-5.6.3/src/LICENSE) | Bifunctors | `either`, `invariant`, `lens`, `profunctors`, `semigroupoids` |+| **`array`** | [`0.5.7.0`](http://hackage.haskell.org/package/array-0.5.7.0) | [`BSD-3-Clause`](http://hackage.haskell.org/package/array-0.5.7.0/src/LICENSE) | Mutable and immutable arrays | `binary`, `containers`, `deepseq`, `ghc`, `ghci`, `indexed-traversable`, `invariant`, `stm`, `text` |+| `assoc` | [`1.1.1`](http://hackage.haskell.org/package/assoc-1.1.1) | [`BSD-3-Clause`](http://hackage.haskell.org/package/assoc-1.1.1/src/LICENSE) | swap and assoc: Symmetric and Semigroupy Bifunctors | `bifunctors`, `strict`, `these` |+| `base-orphans` | [`0.9.4`](http://hackage.haskell.org/package/base-orphans-0.9.4) | [`MIT`](http://hackage.haskell.org/package/base-orphans-0.9.4/src/LICENSE) | Backwards-compatible orphan instances for base | `profunctors`, `semigroupoids`, `transformers-base` |+| `bifunctors` | [`5.6.3`](http://hackage.haskell.org/package/bifunctors-5.6.3) | [`BSD-3-Clause`](http://hackage.haskell.org/package/bifunctors-5.6.3/src/LICENSE) | Bifunctors | `either`, `invariant`, `profunctors`, `semigroupoids` | | **`binary`** | [`0.8.9.2`](http://hackage.haskell.org/package/binary-0.8.9.2) | [`BSD-3-Clause`](http://hackage.haskell.org/package/binary-0.8.9.2/src/LICENSE) | Binary serialisation for Haskell values using lazy ByteStrings | `ghc`, `ghc-boot`, `ghci`, `strict`, `text`, `these` |-| **`bytestring`** | [`0.12.1.0`](http://hackage.haskell.org/package/bytestring-0.12.1.0) | [`BSD-3-Clause`](http://hackage.haskell.org/package/bytestring-0.12.1.0/src/LICENSE) | Fast, compact, strict and lazy byte strings with a list interface | `binary`, `filepath`, `ghc`, `ghc-boot`, `ghci`, `hashable`, `lens`, `os-string`, `strict`, `text`, `unix` |-| `call-stack` | [`0.4.0`](http://hackage.haskell.org/package/call-stack-0.4.0) | [`MIT`](http://hackage.haskell.org/package/call-stack-0.4.0/src/LICENSE) | Use GHC call-stacks in a backward compatible way | `lens` |-| `comonad` | [`5.0.10`](http://hackage.haskell.org/package/comonad-5.0.10) | [`BSD-3-Clause`](http://hackage.haskell.org/package/comonad-5.0.10/src/LICENSE) | Comonads | `adjunctions`, `bifunctors`, `free`, `invariant`, `kan-extensions`, `lens`, `profunctors`, `semigroupoids`, `yaya` |-| `contravariant` | [`1.5.6`](http://hackage.haskell.org/package/contravariant-1.5.6) | [`BSD-3-Clause`](http://hackage.haskell.org/package/contravariant-1.5.6/src/LICENSE) | Contravariant functors | `invariant`, `kan-extensions`, `lens`, `profunctors`, `semigroupoids` |-| **`deepseq`** | [`1.5.0.0`](http://hackage.haskell.org/package/deepseq-1.5.0.0) | [`BSD-3-Clause`](http://hackage.haskell.org/package/deepseq-1.5.0.0/src/LICENSE) | Deep evaluation of data structures | `bytestring`, `containers`, `filepath`, `ghc`, `ghc-boot`, `ghci`, `hashable`, `hpc`, `os-string`, `parallel`, `pretty`, `primitive`, `process`, `strict`, `tagged`, `text`, `these`, `time`, `unordered-containers`, `vector` |+| **`bytestring`** | [`0.12.1.0`](http://hackage.haskell.org/package/bytestring-0.12.1.0) | [`BSD-3-Clause`](http://hackage.haskell.org/package/bytestring-0.12.1.0/src/LICENSE) | Fast, compact, strict and lazy byte strings with a list interface | `binary`, `filepath`, `ghc`, `ghc-boot`, `ghci`, `hashable`, `os-string`, `strict`, `text`, `unix` |+| `comonad` | [`5.0.10`](http://hackage.haskell.org/package/comonad-5.0.10) | [`BSD-3-Clause`](http://hackage.haskell.org/package/comonad-5.0.10/src/LICENSE) | Comonads | `adjunctions`, `bifunctors`, `free`, `invariant`, `kan-extensions`, `profunctors`, `semigroupoids`, `yaya`, `yaya-unsafe` |+| `contravariant` | [`1.5.6`](http://hackage.haskell.org/package/contravariant-1.5.6) | [`BSD-3-Clause`](http://hackage.haskell.org/package/contravariant-1.5.6/src/LICENSE) | Contravariant functors | `invariant`, `kan-extensions`, `profunctors`, `semigroupoids` |+| **`deepseq`** | [`1.5.0.0`](http://hackage.haskell.org/package/deepseq-1.5.0.0) | [`BSD-3-Clause`](http://hackage.haskell.org/package/deepseq-1.5.0.0/src/LICENSE) | Deep evaluation of data structures | `bytestring`, `containers`, `filepath`, `ghc`, `ghc-boot`, `ghci`, `hashable`, `hpc`, `os-string`, `pretty`, `process`, `strict`, `tagged`, `text`, `these`, `time`, `unordered-containers` | | **`directory`** | [`1.3.8.3`](http://hackage.haskell.org/package/directory-1.3.8.3) | [`BSD-3-Clause`](http://hackage.haskell.org/package/directory-1.3.8.3/src/LICENSE) | Platform-agnostic library for filesystem operations | `ghc`, `ghc-boot`, `hpc`, `process` |-| `distributive` | [`0.6.3`](http://hackage.haskell.org/package/distributive-0.6.3) | [`BSD-3-Clause`](http://hackage.haskell.org/package/distributive-0.6.3/src/LICENSE) | Distributive functors -- Dual to Traversable | `adjunctions`, `comonad`, `free`, `kan-extensions`, `lens`, `profunctors` |+| `distributive` | [`0.6.3`](http://hackage.haskell.org/package/distributive-0.6.3) | [`BSD-3-Clause`](http://hackage.haskell.org/package/distributive-0.6.3/src/LICENSE) | Distributive functors -- Dual to Traversable | `adjunctions`, `comonad`, `free`, `kan-extensions`, `profunctors` | | `either` | [`5.0.3`](http://hackage.haskell.org/package/either-5.0.3) | [`BSD-3-Clause`](http://hackage.haskell.org/package/either-5.0.3/src/LICENSE) | Combinators for working with sums | `yaya` |-| **`exceptions`** | [`0.10.7`](http://hackage.haskell.org/package/exceptions-0.10.7) | [`BSD-3-Clause`](http://hackage.haskell.org/package/exceptions-0.10.7/src/LICENSE) | Extensible optionally-pure exceptions | `filepath`, `free`, `ghc`, `kan-extensions`, `lens`, `os-string`, `semaphore-compat` |-| **`filepath`** | [`1.5.2.0`](http://hackage.haskell.org/package/filepath-1.5.2.0) | [`BSD-3-Clause`](http://hackage.haskell.org/package/filepath-1.5.2.0/src/LICENSE) | Library for manipulating FilePaths in a cross platform way. | `directory`, `ghc`, `ghc-boot`, `ghci`, `hashable`, `hpc`, `lens`, `process`, `unix` |-| `free` | [`5.2`](http://hackage.haskell.org/package/free-5.2) | [`BSD-3-Clause`](http://hackage.haskell.org/package/free-5.2/src/LICENSE) | Monads for free | `adjunctions`, `kan-extensions`, `lens`, `yaya` |+| **`exceptions`** | [`0.10.7`](http://hackage.haskell.org/package/exceptions-0.10.7) | [`BSD-3-Clause`](http://hackage.haskell.org/package/exceptions-0.10.7/src/LICENSE) | Extensible optionally-pure exceptions | `filepath`, `free`, `ghc`, `kan-extensions`, `os-string`, `semaphore-compat` |+| **`filepath`** | [`1.5.2.0`](http://hackage.haskell.org/package/filepath-1.5.2.0) | [`BSD-3-Clause`](http://hackage.haskell.org/package/filepath-1.5.2.0/src/LICENSE) | Library for manipulating FilePaths in a cross platform way. | `directory`, `ghc`, `ghc-boot`, `ghci`, `hashable`, `hpc`, `process`, `unix` |+| `free` | [`5.2`](http://hackage.haskell.org/package/free-5.2) | [`BSD-3-Clause`](http://hackage.haskell.org/package/free-5.2/src/LICENSE) | Monads for free | `adjunctions`, `kan-extensions`, `yaya`, `yaya-unsafe` | | **`ghc`** | [`9.10.1`](http://hackage.haskell.org/package/ghc-9.10.1) | [`BSD-3-Clause`](http://hackage.haskell.org/package/ghc-9.10.1/src/LICENSE) | The GHC API | `no-recursion` | | **`ghc-bignum`** | [`1.3`](http://hackage.haskell.org/package/ghc-bignum-1.3) | [`BSD-3-Clause`](http://hackage.haskell.org/package/ghc-bignum-1.3/src/LICENSE) | GHC BigNum library | `ghc-internal` | | **`ghc-boot`** | [`9.10.1`](http://hackage.haskell.org/package/ghc-boot-9.10.1) | [`BSD-3-Clause`](http://hackage.haskell.org/package/ghc-boot-9.10.1/src/LICENSE) | Shared functionality between GHC and its boot libraries | `ghc`, `ghci` |@@ -45,36 +44,29 @@ | **`ghc-platform`** | [`0.1.0.0`](http://hackage.haskell.org/package/ghc-platform-0.1.0.0) | *MISSING* | *MISSING* | `ghc-boot` | | **`ghc-prim`** | [`0.11.0`](http://hackage.haskell.org/package/ghc-prim-0.11.0) | [`BSD-3-Clause`](http://hackage.haskell.org/package/ghc-prim-0.11.0/src/LICENSE) | GHC primitives | *(core library)* | | **`ghci`** | [`9.10.1`](http://hackage.haskell.org/package/ghci-9.10.1) | *MISSING* | *MISSING* | `ghc` |-| `hashable` | [`1.5.1.0`](http://hackage.haskell.org/package/hashable-1.5.1.0) | [`BSD-3-Clause`](http://hackage.haskell.org/package/hashable-1.5.1.0/src/LICENSE) | A class for types that can be converted to a hash value | `lens`, `semigroupoids`, `strict`, `these`, `unordered-containers` |+| `hashable` | [`1.5.1.0`](http://hackage.haskell.org/package/hashable-1.5.1.0) | [`BSD-3-Clause`](http://hackage.haskell.org/package/hashable-1.5.1.0/src/LICENSE) | A class for types that can be converted to a hash value | `semigroupoids`, `strict`, `these`, `unordered-containers` | | **`hpc`** | [`0.7.0.1`](http://hackage.haskell.org/package/hpc-0.7.0.1) | [`BSD-3-Clause`](http://hackage.haskell.org/package/hpc-0.7.0.1/src/LICENSE) | Code Coverage Library for Haskell | `ghc` |-| `indexed-traversable` | [`0.1.4`](http://hackage.haskell.org/package/indexed-traversable-0.1.4) | [`BSD-2-Clause`](http://hackage.haskell.org/package/indexed-traversable-0.1.4/src/LICENSE) | FunctorWithIndex, FoldableWithIndex, TraversableWithIndex | `comonad`, `free`, `indexed-traversable-instances`, `lens` |-| `indexed-traversable-instances` | [`0.1.2`](http://hackage.haskell.org/package/indexed-traversable-instances-0.1.2) | [`BSD-2-Clause`](http://hackage.haskell.org/package/indexed-traversable-instances-0.1.2/src/LICENSE) | More instances of FunctorWithIndex, FoldableWithIndex, TraversableWithIndex | `lens` |+| `indexed-traversable` | [`0.1.4`](http://hackage.haskell.org/package/indexed-traversable-0.1.4) | [`BSD-2-Clause`](http://hackage.haskell.org/package/indexed-traversable-0.1.4/src/LICENSE) | FunctorWithIndex, FoldableWithIndex, TraversableWithIndex | `comonad`, `free` | | `invariant` | [`0.6.5`](http://hackage.haskell.org/package/invariant-0.6.5) | [`BSD-2-Clause`](http://hackage.haskell.org/package/invariant-0.6.5/src/LICENSE) | Haskell98 invariant functors | `kan-extensions` |-| `kan-extensions` | [`5.2.8`](http://hackage.haskell.org/package/kan-extensions-5.2.8) | [`BSD-3-Clause`](http://hackage.haskell.org/package/kan-extensions-5.2.8/src/LICENSE) | Kan extensions, Kan lifts, the Yoneda lemma, and (co)density (co)monads | `lens`, `yaya` |-| `lens` | [`5.3.6`](http://hackage.haskell.org/package/lens-5.3.6) | [`BSD-2-Clause`](http://hackage.haskell.org/package/lens-5.3.6/src/LICENSE) | Lenses, Folds and Traversals | `yaya` |-| **`mtl`** | [`2.3.1`](http://hackage.haskell.org/package/mtl-2.3.1) | [`BSD-3-Clause`](http://hackage.haskell.org/package/mtl-2.3.1/src/LICENSE) | Monad classes for transformers, using functional dependencies | `adjunctions`, `either`, `exceptions`, `free`, `kan-extensions`, `lens` |+| `kan-extensions` | [`5.2.8`](http://hackage.haskell.org/package/kan-extensions-5.2.8) | [`BSD-3-Clause`](http://hackage.haskell.org/package/kan-extensions-5.2.8/src/LICENSE) | Kan extensions, Kan lifts, the Yoneda lemma, and (co)density (co)monads | `yaya` |+| **`mtl`** | [`2.3.1`](http://hackage.haskell.org/package/mtl-2.3.1) | [`BSD-3-Clause`](http://hackage.haskell.org/package/mtl-2.3.1/src/LICENSE) | Monad classes for transformers, using functional dependencies | `adjunctions`, `either`, `exceptions`, `free`, `kan-extensions` | | **`os-string`** | [`2.0.2`](http://hackage.haskell.org/package/os-string-2.0.2) | [`BSD-3-Clause`](http://hackage.haskell.org/package/os-string-2.0.2/src/LICENSE) | Library for manipulating Operating system strings. | `directory`, `filepath`, `hashable`, `unix` |-| `parallel` | [`3.3.0.0`](http://hackage.haskell.org/package/parallel-3.3.0.0) | [`BSD-3-Clause`](http://hackage.haskell.org/package/parallel-3.3.0.0/src/LICENSE) | Parallel programming library | `lens` | | **`pretty`** | [`1.1.3.6`](http://hackage.haskell.org/package/pretty-1.1.3.6) | [`BSD-3-Clause`](http://hackage.haskell.org/package/pretty-1.1.3.6/src/LICENSE) | Pretty-printing library | `template-haskell` |-| `primitive` | [`0.9.1.0`](http://hackage.haskell.org/package/primitive-0.9.1.0) | [`BSD-3-Clause`](http://hackage.haskell.org/package/primitive-0.9.1.0/src/LICENSE) | Primitive memory-related operations | `vector` | | **`process`** | [`1.6.19.0`](http://hackage.haskell.org/package/process-1.6.19.0) | [`BSD-3-Clause`](http://hackage.haskell.org/package/process-1.6.19.0/src/LICENSE) | Process libraries | `ghc` |-| `profunctors` | [`5.6.3`](http://hackage.haskell.org/package/profunctors-5.6.3) | [`BSD-3-Clause`](http://hackage.haskell.org/package/profunctors-5.6.3/src/LICENSE) | Profunctors | `adjunctions`, `either`, `free`, `invariant`, `kan-extensions`, `lens`, `yaya` |-| `reflection` | [`2.1.9`](http://hackage.haskell.org/package/reflection-2.1.9) | [`BSD-3-Clause`](http://hackage.haskell.org/package/reflection-2.1.9/src/LICENSE) | Reifies arbitrary terms into types that can be reflected back into terms | `lens` |+| `profunctors` | [`5.6.3`](http://hackage.haskell.org/package/profunctors-5.6.3) | [`BSD-3-Clause`](http://hackage.haskell.org/package/profunctors-5.6.3/src/LICENSE) | Profunctors | `adjunctions`, `either`, `free`, `invariant`, `kan-extensions`, `yaya` | | **`semaphore-compat`** | [`1.0.0`](http://hackage.haskell.org/package/semaphore-compat-1.0.0) | [`BSD-3-Clause`](http://hackage.haskell.org/package/semaphore-compat-1.0.0) | Cross-platform abstraction for system semaphores | `ghc` |-| `semigroupoids` | [`6.0.2`](http://hackage.haskell.org/package/semigroupoids-6.0.2) | [`BSD-2-Clause`](http://hackage.haskell.org/package/semigroupoids-6.0.2/src/LICENSE) | Semigroupoids: Category sans id | `adjunctions`, `either`, `free`, `kan-extensions`, `lens` |+| `semigroupoids` | [`6.0.2`](http://hackage.haskell.org/package/semigroupoids-6.0.2) | [`BSD-2-Clause`](http://hackage.haskell.org/package/semigroupoids-6.0.2/src/LICENSE) | Semigroupoids: Category sans id | `adjunctions`, `either`, `free`, `kan-extensions` | | **`stm`** | [`2.5.3.1`](http://hackage.haskell.org/package/stm-2.5.3.1) | [`BSD-3-Clause`](http://hackage.haskell.org/package/stm-2.5.3.1/src/LICENSE) | Software Transactional Memory | `StateVar`, `exceptions`, `ghc`, `invariant`, `transformers-base` |-| `strict` | [`0.5.1`](http://hackage.haskell.org/package/strict-0.5.1) | [`BSD-3-Clause`](http://hackage.haskell.org/package/strict-0.5.1/src/LICENSE) | Strict data types and String IO. | `lens`, `yaya` |-| `tagged` | [`0.8.10`](http://hackage.haskell.org/package/tagged-0.8.10) | [`BSD-3-Clause`](http://hackage.haskell.org/package/tagged-0.8.10/src/LICENSE) | Haskell 98 phantom types to avoid unsafely passing dummy arguments | `adjunctions`, `bifunctors`, `comonad`, `distributive`, `indexed-traversable-instances`, `invariant`, `lens`, `profunctors`, `semigroupoids` |-| **`template-haskell`** | [`2.22.0.0`](http://hackage.haskell.org/package/template-haskell-2.22.0.0) | [`BSD-3-Clause`](http://hackage.haskell.org/package/template-haskell-2.22.0.0/src/LICENSE) | Support library for Template Haskell | `OneTuple`, `bifunctors`, `bytestring`, `containers`, `exceptions`, `filepath`, `free`, `ghc`, `ghci`, `invariant`, `lens`, `os-string`, `primitive`, `reflection`, `semigroupoids`, `tagged`, `text`, `th-abstraction`, `unordered-containers`, `yaya` |-| **`text`** | [`2.1.1`](http://hackage.haskell.org/package/text-2.1.1) | [`BSD-2-Clause`](http://hackage.haskell.org/package/text-2.1.1/src/LICENSE) | An efficient packed Unicode text type. | `hashable`, `lens`, `strict` |-| `th-abstraction` | [`0.7.2.0`](http://hackage.haskell.org/package/th-abstraction-0.7.2.0) | [`ISC`](http://hackage.haskell.org/package/th-abstraction-0.7.2.0/src/LICENSE) | Nicer interface for reified information about data types | `bifunctors`, `free`, `invariant`, `lens`, `yaya` |-| `these` | [`1.2.1`](http://hackage.haskell.org/package/these-1.2.1) | [`BSD-3-Clause`](http://hackage.haskell.org/package/these-1.2.1/src/LICENSE) | An either-or-both data type. | `lens`, `strict` |+| `strict` | [`0.5.1`](http://hackage.haskell.org/package/strict-0.5.1) | [`BSD-3-Clause`](http://hackage.haskell.org/package/strict-0.5.1/src/LICENSE) | Strict data types and String IO. | `yaya` |+| `tagged` | [`0.8.10`](http://hackage.haskell.org/package/tagged-0.8.10) | [`BSD-3-Clause`](http://hackage.haskell.org/package/tagged-0.8.10/src/LICENSE) | Haskell 98 phantom types to avoid unsafely passing dummy arguments | `adjunctions`, `bifunctors`, `comonad`, `distributive`, `invariant`, `profunctors`, `semigroupoids` |+| **`template-haskell`** | [`2.22.0.0`](http://hackage.haskell.org/package/template-haskell-2.22.0.0) | [`BSD-3-Clause`](http://hackage.haskell.org/package/template-haskell-2.22.0.0/src/LICENSE) | Support library for Template Haskell | `bifunctors`, `bytestring`, `containers`, `exceptions`, `filepath`, `free`, `ghc`, `ghci`, `invariant`, `os-string`, `semigroupoids`, `tagged`, `text`, `th-abstraction`, `unordered-containers`, `yaya` |+| **`text`** | [`2.1.1`](http://hackage.haskell.org/package/text-2.1.1) | [`BSD-2-Clause`](http://hackage.haskell.org/package/text-2.1.1/src/LICENSE) | An efficient packed Unicode text type. | `hashable`, `strict` |+| `th-abstraction` | [`0.7.2.0`](http://hackage.haskell.org/package/th-abstraction-0.7.2.0) | [`ISC`](http://hackage.haskell.org/package/th-abstraction-0.7.2.0/src/LICENSE) | Nicer interface for reified information about data types | `bifunctors`, `free`, `invariant`, `yaya` |+| `these` | [`1.2.1`](http://hackage.haskell.org/package/these-1.2.1) | [`BSD-3-Clause`](http://hackage.haskell.org/package/these-1.2.1/src/LICENSE) | An either-or-both data type. | `strict` | | **`time`** | [`1.12.2`](http://hackage.haskell.org/package/time-1.12.2) | [`BSD-2-Clause`](http://hackage.haskell.org/package/time-1.12.2/src/LICENSE) | A time library | `directory`, `ghc`, `hpc`, `unix` |-| **`transformers`** | [`0.6.1.1`](http://hackage.haskell.org/package/transformers-0.6.1.1) | [`BSD-3-Clause`](http://hackage.haskell.org/package/transformers-0.6.1.1/src/LICENSE) | Concrete functor and monad transformers | `StateVar`, `adjunctions`, `comonad`, `contravariant`, `distributive`, `exceptions`, `free`, `ghc`, `ghci`, `indexed-traversable`, `invariant`, `kan-extensions`, `lens`, `mtl`, `primitive`, `profunctors`, `semigroupoids`, `strict`, `transformers-base`, `transformers-compat`, `yaya` |-| `transformers-base` | [`0.4.6`](http://hackage.haskell.org/package/transformers-base-0.4.6) | [`BSD-3-Clause`](http://hackage.haskell.org/package/transformers-base-0.4.6/src/LICENSE) | Lift computations from the bottom of a transformer stack | `free` |+| **`transformers`** | [`0.6.1.1`](http://hackage.haskell.org/package/transformers-0.6.1.1) | [`BSD-3-Clause`](http://hackage.haskell.org/package/transformers-0.6.1.1/src/LICENSE) | Concrete functor and monad transformers | `StateVar`, `adjunctions`, `comonad`, `contravariant`, `distributive`, `exceptions`, `free`, `ghc`, `ghci`, `indexed-traversable`, `invariant`, `kan-extensions`, `mtl`, `profunctors`, `semigroupoids`, `strict`, `transformers-base`, `transformers-compat`, `yaya` |+| `transformers-base` | [`0.4.6.1`](http://hackage.haskell.org/package/transformers-base-0.4.6.1) | [`BSD-3-Clause`](http://hackage.haskell.org/package/transformers-base-0.4.6.1/src/LICENSE) | Lift computations from the bottom of a transformer stack | `free` | | `transformers-compat` | [`0.7.2`](http://hackage.haskell.org/package/transformers-compat-0.7.2) | [`BSD-3-Clause`](http://hackage.haskell.org/package/transformers-compat-0.7.2/src/LICENSE) | A small compatibility shim for the transformers library | `semigroupoids`, `transformers-base` | | **`unix`** | [`2.8.5.1`](http://hackage.haskell.org/package/unix-2.8.5.1) | [`BSD-3-Clause`](http://hackage.haskell.org/package/unix-2.8.5.1/src/LICENSE) | POSIX functionality | `directory`, `ghc`, `ghc-boot`, `ghci`, `process`, `semaphore-compat` |-| `unordered-containers` | [`0.2.21`](http://hackage.haskell.org/package/unordered-containers-0.2.21) | [`BSD-3-Clause`](http://hackage.haskell.org/package/unordered-containers-0.2.21/src/LICENSE) | Efficient hashing-based container types | `indexed-traversable-instances`, `invariant`, `lens`, `semigroupoids` |-| `vector` | [`0.13.2.0`](http://hackage.haskell.org/package/vector-0.13.2.0) | [`BSD-3-Clause`](http://hackage.haskell.org/package/vector-0.13.2.0/src/LICENSE) | Efficient Arrays | `indexed-traversable-instances`, `lens` |-| `vector-stream` | [`0.1.0.1`](http://hackage.haskell.org/package/vector-stream-0.1.0.1) | [`BSD-3-Clause`](http://hackage.haskell.org/package/vector-stream-0.1.0.1/src/LICENSE) | Efficient Streams | `vector` |+| `unordered-containers` | [`0.2.21`](http://hackage.haskell.org/package/unordered-containers-0.2.21) | [`BSD-3-Clause`](http://hackage.haskell.org/package/unordered-containers-0.2.21/src/LICENSE) | Efficient hashing-based container types | `invariant`, `semigroupoids` |
src/Yaya/Containers/Pattern/IntMap.hs view
@@ -3,52 +3,66 @@ {-# OPTIONS_GHC -Wno-orphans #-} module Yaya.Containers.Pattern.IntMap- ( IntMapF (BinF, NilF, TipF),+ ( IntMap (Bin, Nil, Tip), ) where -import "base" Control.Applicative (Alternative ((<|>)), Applicative ((<*>)), (*>))-import "base" Control.Category (Category ((.)))+import "base" Control.Applicative ((*>), (<*>), (<|>))+import "base" Control.Category ((.)) import "base" Data.Bool (Bool (False, True), (&&))-import "base" Data.Eq (Eq ((==)))+import "base" Data.Eq (Eq, (==)) import "base" Data.Foldable (Foldable) import "base" Data.Function (($))-import "base" Data.Functor (Functor (fmap), (<$), (<$>))+import "base" Data.Functor (Functor, (<$), (<$>)) import "base" Data.Functor.Classes- ( Eq1 (liftEq),- Eq2 (liftEq2),- Ord1 (liftCompare),- Ord2 (liftCompare2),- Read1 (liftReadPrec),- Read2 (liftReadPrec2),- Show1 (liftShowsPrec),- Show2 (liftShowsPrec2),+ ( Eq1,+ Eq2,+ Ord1,+ Ord2,+ Read1,+ Read2,+ Show1,+ Show2,+ liftCompare,+ liftCompare2,+ liftEq,+ liftEq2,+ liftReadPrec,+ liftReadPrec2,+ liftShowsPrec,+ liftShowsPrec2, )-import "base" Data.Ord (Ord (compare, (<=)), Ordering (EQ, GT, LT))+import "base" Data.Ord (Ord, Ordering (EQ, GT, LT), compare, (<=)) import "base" Data.Semigroup ((<>)) import "base" Data.Traversable (Traversable) import qualified "base" Data.Tuple as Tuple import "base" GHC.Generics (Generic, Generic1)-import "base" GHC.Read (Read (readListPrec, readPrec), expectP, parens)+import "base" GHC.Read (Read, expectP, parens, readListPrec, readPrec) import "base" Text.ParserCombinators.ReadPrec (prec, step) import qualified "base" Text.Read.Lex as Lex-import "base" Text.Show (Show (showList, showsPrec), showParen, showString)+import "base" Text.Show (Show, showList, showParen, showString, showsPrec) import qualified "containers" Data.IntMap.Internal as IntMap import "yaya" Yaya.Fold- ( Projectable (project),- Recursive (cata),- Steppable (embed),+ ( Projectable,+ Recursive,+ Steppable,+ cata,+ embed,+ project, )-import "base" Prelude (Num ((+)))+import qualified "yaya-unsafe" Yaya.Unsafe.Fold as Unsafe+import "base" Prelude ((+)) #if MIN_VERSION_containers(0, 8, 0) import qualified "containers" Data.IntSet.Internal.IntTreeCommons as IntMap ( Prefix (Prefix), )+#endif -data IntMapF a r- = NilF- | TipF IntMap.Key a- | BinF IntMap.Prefix r r+data IntMap a r+ = Nil+ | Tip IntMap.Key a+#if MIN_VERSION_containers(0, 8, 0)+ | Bin IntMap.Prefix r r deriving stock ( Eq, Generic,@@ -58,10 +72,7 @@ Traversable ) #else-data IntMapF a r- = NilF- | TipF IntMap.Key a- | BinF IntMap.Prefix IntMap.Mask r r+ | Bin IntMap.Prefix IntMap.Mask r r deriving stock ( Eq, Generic,@@ -72,96 +83,98 @@ ) #endif -instance Projectable (->) (IntMap.IntMap a) (IntMapF a) where- project IntMap.Nil = NilF- project (IntMap.Tip key a) = TipF key a+instance Projectable (->) (IntMap.IntMap a) (IntMap a) where+ project = \case+ IntMap.Nil -> Nil+ IntMap.Tip key a -> Tip key a #if MIN_VERSION_containers(0, 8, 0)- project (IntMap.Bin prefix l r) = BinF prefix l r+ IntMap.Bin prefix l r -> Bin prefix l r #else- project (IntMap.Bin prefix mask l r) = BinF prefix mask l r+ IntMap.Bin prefix mask l r -> Bin prefix mask l r #endif -instance Recursive (->) (IntMap.IntMap a) (IntMapF a) where- cata φ = φ . fmap (cata φ) . project+instance Recursive (->) (IntMap.IntMap a) (IntMap a) where+ cata = Unsafe.unsafeCata -instance Steppable (->) (IntMap.IntMap a) (IntMapF a) where- embed NilF = IntMap.Nil- embed (TipF key a) = IntMap.Tip key a+instance Steppable (->) (IntMap.IntMap a) (IntMap a) where+ embed = \case+ Nil -> IntMap.Nil+ Tip key a -> IntMap.Tip key a #if MIN_VERSION_containers(0, 8, 0)- embed (BinF prefix l r) = IntMap.Bin prefix l r+ Bin prefix l r -> IntMap.Bin prefix l r #else- embed (BinF prefix mask l r) = IntMap.Bin prefix mask l r+ Bin prefix mask l r -> IntMap.Bin prefix mask l r #endif -instance (Eq a) => Eq1 (IntMapF a) where+instance (Eq a) => Eq1 (IntMap a) where liftEq = liftEq2 (==) -instance Eq2 IntMapF where+instance Eq2 IntMap where liftEq2 f g = Tuple.curry $ \case- (NilF, NilF) -> True- (NilF, _) -> False- (_, NilF) -> False- (TipF key a, TipF key' a') -> key == key' && f a a'- (TipF {}, _) -> False- (_, TipF {}) -> False+ (Nil, Nil) -> True+ (Nil, _) -> False+ (_, Nil) -> False+ (Tip key a, Tip key' a') -> key == key' && f a a'+ (Tip {}, _) -> False+ (_, Tip {}) -> False #if MIN_VERSION_containers(0, 8, 0)- (BinF prefix l r, BinF prefix' l' r') ->+ (Bin prefix l r, Bin prefix' l' r') -> prefix == prefix' && g l l' && g r r' #else- (BinF prefix mask l r, BinF prefix' mask' l' r') ->+ (Bin prefix mask l r, Bin prefix' mask' l' r') -> prefix == prefix' && mask == mask' && g l l' && g r r' #endif -instance (Ord a, Ord r) => Ord (IntMapF a r) where+instance (Ord a, Ord r) => Ord (IntMap a r) where compare = liftCompare compare -instance (Ord a) => Ord1 (IntMapF a) where+instance (Ord a) => Ord1 (IntMap a) where liftCompare = liftCompare2 compare -instance Ord2 IntMapF where+instance Ord2 IntMap where liftCompare2 f g = Tuple.curry $ \case- (NilF, NilF) -> EQ- (NilF, _) -> LT- (TipF {}, NilF) -> GT- (TipF key a, TipF key' a') -> compare key key' <> f a a'- (TipF {}, BinF {}) -> LT- (BinF {}, NilF) -> GT- (BinF {}, TipF {}) -> GT+ (Nil, Nil) -> EQ+ (Nil, _) -> LT+ (Tip {}, Nil) -> GT+ (Tip key a, Tip key' a') -> compare key key' <> f a a'+ (Tip {}, Bin {}) -> LT+ (Bin {}, Nil) -> GT+ (Bin {}, Tip {}) -> GT #if MIN_VERSION_containers(0, 8, 0)- (BinF (IntMap.Prefix prefix) l r, BinF (IntMap.Prefix prefix') l' r') ->+ (Bin (IntMap.Prefix prefix) l r, Bin (IntMap.Prefix prefix') l' r') -> compare prefix prefix' <> g l l' <> g r r' #else- (BinF prefix mask l r, BinF prefix' mask' l' r') ->+ (Bin prefix mask l r, Bin prefix' mask' l' r') -> compare prefix prefix' <> compare mask mask' <> g l l' <> g r r' #endif -- | @since 0.1.2.0-instance (Read a, Read r) => Read (IntMapF a r) where+instance (Read a, Read r) => Read (IntMap a r) where readPrec = liftReadPrec readPrec readListPrec -- | @since 0.1.2.0-instance (Read a) => Read1 (IntMapF a) where+instance (Read a) => Read1 (IntMap a) where liftReadPrec = liftReadPrec2 readPrec readListPrec -- | @since 0.1.2.0-instance Read2 IntMapF where+instance Read2 IntMap where liftReadPrec2 readPrecA _ readPrecR _ = let appPrec = 10 in parens . prec appPrec $- NilF- <$ expectP (Lex.Ident "NilF")+ Nil+ <$ expectP (Lex.Ident "Nil") <|> expectP (Lex.Ident "TipF")- *> (TipF <$> step readPrec <*> step readPrecA)+ *> (Tip <$> step readPrec <*> step readPrecA) #if MIN_VERSION_containers(0, 8, 0)- <|> expectP (Lex.Ident "BinF")- *> ( BinF . IntMap.Prefix+ <|> expectP (Lex.Ident "Bin")+ *> ( Bin . IntMap.Prefix <$> step readPrec <*> step readPrecR <*> step readPrecR ) #else- <|> expectP (Lex.Ident "BinF")- *> ( BinF+ <|> expectP (Lex.Ident "Bin")+ *> ( Bin <$> step readPrec <*> step readPrec <*> step readPrecR@@ -169,37 +182,37 @@ ) #endif -instance (Show a, Show r) => Show (IntMapF a r) where+instance (Show a, Show r) => Show (IntMap a r) where showsPrec = liftShowsPrec showsPrec showList -instance (Show a) => Show1 (IntMapF a) where+instance (Show a) => Show1 (IntMap a) where liftShowsPrec = liftShowsPrec2 showsPrec showList -instance Show2 IntMapF where+instance Show2 IntMap where liftShowsPrec2 showsPrecA _ showsPrecR _ p = let appPrec = 10 nextPrec = appPrec + 1 in \case- NilF -> showString "NilF"- TipF key a ->+ Nil -> showString "Nil"+ Tip key a -> showParen (nextPrec <= p) $- showString "TipF "+ showString "Tip " . showsPrec nextPrec key . showString " " . showsPrecA nextPrec a #if MIN_VERSION_containers(0, 8, 0)- BinF (IntMap.Prefix prefix) l r ->+ Bin (IntMap.Prefix prefix) l r -> showParen (nextPrec <= p) $- showString "BinF "+ showString "Bin " . showsPrec nextPrec prefix . showString " " . showsPrecR nextPrec l . showString " " . showsPrecR nextPrec r #else- BinF prefix mask l r ->+ Bin prefix mask l r -> showParen (nextPrec <= p) $- showString "BinF "+ showString "Bin " . showsPrec nextPrec prefix . showString " " . showsPrec nextPrec mask
src/Yaya/Containers/Pattern/IntSet.hs view
@@ -3,53 +3,59 @@ {-# OPTIONS_GHC -Wno-orphans #-} module Yaya.Containers.Pattern.IntSet- ( IntSetF (BinF, NilF, TipF),+ ( IntSet (Bin, Nil, Tip), ) where -import "base" Control.Applicative- ( Alternative ((<|>)),- Applicative ((<*>)),- (*>),- )-import "base" Control.Category (Category ((.)))+import "base" Control.Applicative ((*>), (<*>), (<|>))+import "base" Control.Category ((.)) import "base" Data.Bool (Bool (False, True), (&&))-import "base" Data.Eq (Eq ((==)))+import "base" Data.Eq (Eq, (==)) import "base" Data.Foldable (Foldable) import "base" Data.Function (($))-import "base" Data.Functor (Functor (fmap), (<$), (<$>))+import "base" Data.Functor (Functor, (<$), (<$>)) import "base" Data.Functor.Classes- ( Eq1 (liftEq),- Ord1 (liftCompare),- Read1 (liftReadPrec),- Show1 (liftShowsPrec),+ ( Eq1,+ Ord1,+ Read1,+ Show1,+ liftCompare,+ liftEq,+ liftReadPrec,+ liftShowsPrec, ) import "base" Data.Int (Int)-import "base" Data.Ord (Ord (compare, (<=)), Ordering (EQ, GT, LT))+import "base" Data.Ord (Ord, Ordering (EQ, GT, LT), compare, (<=)) import "base" Data.Semigroup ((<>)) import "base" Data.Traversable (Traversable) import qualified "base" Data.Tuple as Tuple import "base" GHC.Generics (Generic, Generic1)-import "base" GHC.Read (Read (readPrec), expectP, parens, readListPrec)+import "base" GHC.Read (Read, expectP, parens, readListPrec, readPrec) import "base" Text.ParserCombinators.ReadPrec (prec, step) import qualified "base" Text.Read.Lex as Lex-import "base" Text.Show (Show (showsPrec), showList, showParen, showString)+import "base" Text.Show (Show, showList, showParen, showString, showsPrec) import qualified "containers" Data.IntSet.Internal as IntSet import "yaya" Yaya.Fold- ( Projectable (project),- Recursive (cata),- Steppable (embed),+ ( Projectable,+ Recursive,+ Steppable,+ cata,+ embed,+ project, )-import "base" Prelude (Num ((+)))+import qualified "yaya-unsafe" Yaya.Unsafe.Fold as Unsafe+import "base" Prelude ((+)) #if MIN_VERSION_containers(0, 8, 0) import qualified "containers" Data.IntSet.Internal.IntTreeCommons as IntSet ( Prefix (Prefix), )+#endif -data IntSetF r- = NilF- | TipF Int IntSet.BitMap- | BinF IntSet.Prefix r r+data IntSet r+ = Nil+ | Tip Int IntSet.BitMap+#if MIN_VERSION_containers(0, 8, 0)+ | Bin IntSet.Prefix r r deriving stock ( Eq, Generic,@@ -59,10 +65,7 @@ Traversable ) #else-data IntSetF r- = NilF- | TipF Int IntSet.BitMap- | BinF IntSet.Prefix IntSet.Mask r r+ | Bin IntSet.Prefix IntSet.Mask r r deriving stock ( Eq, Generic,@@ -73,87 +76,89 @@ ) #endif -instance Projectable (->) IntSet.IntSet IntSetF where- project IntSet.Nil = NilF- project (IntSet.Tip prefix bm) = TipF prefix bm+instance Projectable (->) IntSet.IntSet IntSet where+ project = \case+ IntSet.Nil -> Nil+ IntSet.Tip prefix bm -> Tip prefix bm #if MIN_VERSION_containers(0, 8, 0)- project (IntSet.Bin prefix l r) = BinF prefix l r+ IntSet.Bin prefix l r -> Bin prefix l r #else- project (IntSet.Bin prefix mask l r) = BinF prefix mask l r+ IntSet.Bin prefix mask l r -> Bin prefix mask l r #endif -instance Recursive (->) IntSet.IntSet IntSetF where- cata φ = φ . fmap (cata φ) . project+instance Recursive (->) IntSet.IntSet IntSet where+ cata = Unsafe.unsafeCata -instance Steppable (->) IntSet.IntSet IntSetF where- embed NilF = IntSet.Nil- embed (TipF prefix bm) = IntSet.Tip prefix bm+instance Steppable (->) IntSet.IntSet IntSet where+ embed = \case+ Nil -> IntSet.Nil+ Tip prefix bm -> IntSet.Tip prefix bm #if MIN_VERSION_containers(0, 8, 0)- embed (BinF prefix l r) = IntSet.Bin prefix l r+ Bin prefix l r -> IntSet.Bin prefix l r #else- embed (BinF prefix mask l r) = IntSet.Bin prefix mask l r+ Bin prefix mask l r -> IntSet.Bin prefix mask l r #endif -instance Eq1 IntSetF where+instance Eq1 IntSet where liftEq f = Tuple.curry $ \case- (NilF, NilF) -> True- (NilF, _) -> False- (_, NilF) -> False- (TipF prefix bm, TipF prefix' bm') -> prefix == prefix' && bm == bm'- (TipF {}, _) -> False- (_, TipF {}) -> False+ (Nil, Nil) -> True+ (Nil, _) -> False+ (_, Nil) -> False+ (Tip prefix bm, Tip prefix' bm') -> prefix == prefix' && bm == bm'+ (Tip {}, _) -> False+ (_, Tip {}) -> False #if MIN_VERSION_containers(0, 8, 0)- (BinF prefix l r, BinF prefix' l' r') ->+ (Bin prefix l r, Bin prefix' l' r') -> prefix == prefix' && f l l' && f r r' #else- (BinF prefix mask l r, BinF prefix' mask' l' r') ->+ (Bin prefix mask l r, Bin prefix' mask' l' r') -> prefix == prefix' && mask == mask' && f l l' && f r r' #endif -instance (Ord r) => Ord (IntSetF r) where+instance (Ord r) => Ord (IntSet r) where compare = liftCompare compare -instance Ord1 IntSetF where+instance Ord1 IntSet where liftCompare f = Tuple.curry $ \case- (NilF, NilF) -> EQ- (NilF, _) -> LT- (TipF {}, NilF) -> GT- (TipF prefix bm, TipF prefix' bm') ->+ (Nil, Nil) -> EQ+ (Nil, _) -> LT+ (Tip {}, Nil) -> GT+ (Tip prefix bm, Tip prefix' bm') -> compare prefix prefix' <> compare bm bm'- (TipF {}, BinF {}) -> LT- (BinF {}, NilF) -> GT- (BinF {}, TipF {}) -> GT+ (Tip {}, Bin {}) -> LT+ (Bin {}, Nil) -> GT+ (Bin {}, Tip {}) -> GT #if MIN_VERSION_containers(0, 8, 0)- (BinF (IntSet.Prefix prefix) l r, BinF (IntSet.Prefix prefix') l' r') ->+ (Bin (IntSet.Prefix prefix) l r, Bin (IntSet.Prefix prefix') l' r') -> compare prefix prefix' <> f l l' <> f r r' #else- (BinF prefix mask l r, BinF prefix' mask' l' r') ->+ (Bin prefix mask l r, Bin prefix' mask' l' r') -> compare prefix prefix' <> compare mask mask' <> f l l' <> f r r' #endif -- | @since 0.1.2.0-instance (Read r) => Read (IntSetF r) where+instance (Read r) => Read (IntSet r) where readPrec = liftReadPrec readPrec readListPrec -- | @since 0.1.2.0-instance Read1 IntSetF where+instance Read1 IntSet where liftReadPrec readPrecR _ = let appPrec = 10 in parens . prec appPrec $- NilF- <$ expectP (Lex.Ident "NilF")- <|> expectP (Lex.Ident "TipF")- *> (TipF <$> step readPrec <*> step readPrec)+ Nil+ <$ expectP (Lex.Ident "Nil")+ <|> expectP (Lex.Ident "Tip")+ *> (Tip <$> step readPrec <*> step readPrec) #if MIN_VERSION_containers(0, 8, 0)- <|> expectP (Lex.Ident "BinF")- *> ( BinF . IntSet.Prefix+ <|> expectP (Lex.Ident "Bin")+ *> ( Bin . IntSet.Prefix <$> step readPrec <*> step readPrecR <*> step readPrecR ) #else- <|> expectP (Lex.Ident "BinF")- *> ( BinF+ <|> expectP (Lex.Ident "Bin")+ *> ( Bin <$> step readPrec <*> step readPrec <*> step readPrecR@@ -161,34 +166,34 @@ ) #endif -instance (Show r) => Show (IntSetF r) where+instance (Show r) => Show (IntSet r) where showsPrec = liftShowsPrec showsPrec showList -instance Show1 IntSetF where+instance Show1 IntSet where liftShowsPrec showsPrecR _ p = let appPrec = 10 nextPrec = appPrec + 1 in \case- NilF -> showString "NilF"- TipF prefix bm ->+ Nil -> showString "Nil"+ Tip prefix bm -> showParen (nextPrec <= p) $- showString "TipF "+ showString "Tip " . showsPrec nextPrec prefix . showString " " . showsPrec nextPrec bm #if MIN_VERSION_containers(0, 8, 0)- BinF (IntSet.Prefix prefix) l r ->+ Bin (IntSet.Prefix prefix) l r -> showParen (nextPrec <= p) $- showString "BinF "+ showString "Bin " . showsPrec nextPrec prefix . showString " " . showsPrecR nextPrec l . showString " " . showsPrecR nextPrec r #else- BinF prefix mask l r ->+ Bin prefix mask l r -> showParen (nextPrec <= p) $- showString "BinF "+ showString "Bin " . showsPrec nextPrec prefix . showString " " . showsPrec nextPrec mask
src/Yaya/Containers/Pattern/Map.hs view
@@ -2,69 +2,81 @@ {-# OPTIONS_GHC -Wno-orphans #-} module Yaya.Containers.Pattern.Map- ( MapF (BinF, TipF),+ ( Map (Bin, Tip), -- | @since 0.1.2.0- eqMapF,+ eqMap, -- | @since 0.1.2.0- compareMapF,+ compareMap, -- | @since 0.1.2.0- readMapFPrec,+ readMapPrec, -- | @since 0.1.2.0- showsMapFPrec,+ showsMapPrec, ) where -import "base" Control.Applicative- ( Alternative ((<|>)),- Applicative ((<*>)),- (*>),- )-import "base" Control.Category (Category ((.)))+import "base" Control.Applicative ((*>), (<*>), (<|>))+import "base" Control.Category ((.)) import "base" Data.Bool (Bool (False, True), (&&))-import "base" Data.Eq (Eq ((==)))+import "base" Data.Eq (Eq, (==)) import "base" Data.Foldable (Foldable) import "base" Data.Function (($))-import "base" Data.Functor (Functor (fmap), (<$), (<$>))+import "base" Data.Functor (Functor, (<$), (<$>)) import "base" Data.Functor.Classes- ( Eq1 (liftEq),- Eq2 (liftEq2),- Ord1 (liftCompare),- Ord2 (liftCompare2),- Read1 (liftReadPrec),- Read2 (liftReadPrec2),- Show1 (liftShowsPrec),- Show2 (liftShowsPrec2),+ ( Eq1,+ Eq2,+ Ord1,+ Ord2,+ Read1,+ Read2,+ Show1,+ Show2,+ liftCompare,+ liftCompare2,+ liftEq,+ liftEq2,+ liftReadPrec,+ liftReadPrec2,+ liftShowsPrec,+ liftShowsPrec2, ) import "base" Data.Int (Int)-import "base" Data.Ord (Ord (compare, (<=)), Ordering (EQ, GT, LT))+import "base" Data.Ord (Ord, Ordering (EQ, GT, LT), compare, (<=)) import "base" Data.Semigroup ((<>)) import "base" Data.Traversable (Traversable) import qualified "base" Data.Tuple as Tuple import "base" GHC.Generics (Generic, Generic1) import "base" GHC.Read (expectP) import "base" Text.Read- ( Read (readListPrec, readPrec),+ ( Read, ReadPrec, parens, prec,+ readListPrec,+ readPrec, step, ) import qualified "base" Text.Read.Lex as Lex import "base" Text.Show- ( Show (showList, showsPrec),+ ( Show, ShowS,+ showList, showParen, showString,+ showsPrec, ) import qualified "containers" Data.Map.Internal as Map import "yaya" Yaya.Fold- ( Projectable (project),- Recursive (cata),- Steppable (embed),+ ( Projectable,+ Recursive,+ Steppable,+ cata,+ embed,+ project, )-import "base" Prelude (Num ((+)))+import qualified "yaya-unsafe" Yaya.Unsafe.Fold as Unsafe+import "base" Prelude ((+)) -data MapF k v r = TipF | BinF Map.Size k ~v r r+data Map k v r = Tip | Bin Map.Size k ~v r r deriving stock ( Eq, Ord,@@ -78,56 +90,56 @@ Traversable ) -instance Projectable (->) (Map.Map k v) (MapF k v) where- project Map.Tip = TipF- project (Map.Bin size k v l r) = BinF size k v l r+instance Projectable (->) (Map.Map k v) (Map k v) where+ project Map.Tip = Tip+ project (Map.Bin size k v l r) = Bin size k v l r -instance Recursive (->) (Map.Map k v) (MapF k v) where- cata φ = φ . fmap (cata φ) . project+instance Recursive (->) (Map.Map k v) (Map k v) where+ cata = Unsafe.unsafeCata -instance Steppable (->) (Map.Map k v) (MapF k v) where- embed TipF = Map.Tip- embed (BinF size k v l r) = Map.Bin size k v l r+instance Steppable (->) (Map.Map k v) (Map k v) where+ embed Tip = Map.Tip+ embed (Bin size k v l r) = Map.Bin size k v l r -eqMapF ::+eqMap :: (k -> k' -> Bool) -> (v -> v' -> Bool) -> (r -> r' -> Bool) ->- MapF k v r ->- MapF k' v' r' ->+ Map k v r ->+ Map k' v' r' -> Bool-eqMapF eqK eqV eqR = Tuple.curry $ \case- (TipF, TipF) -> True- (BinF size k v l r, BinF size' k' v' l' r') ->+eqMap eqK eqV eqR = Tuple.curry $ \case+ (Tip, Tip) -> True+ (Bin size k v l r, Bin size' k' v' l' r') -> size == size' && eqK k k' && eqV v v' && eqR l l' && eqR r r' (_, _) -> False -compareMapF ::+compareMap :: (k -> k' -> Ordering) -> (v -> v' -> Ordering) -> (r -> r' -> Ordering) ->- MapF k v r ->- MapF k' v' r' ->+ Map k v r ->+ Map k' v' r' -> Ordering-compareMapF compareK compareV compareR = Tuple.curry $ \case- (TipF, TipF) -> EQ- (TipF, BinF {}) -> LT- (BinF {}, TipF) -> GT- (BinF size k v l r, BinF size' k' v' l' r') ->+compareMap compareK compareV compareR = Tuple.curry $ \case+ (Tip, Tip) -> EQ+ (Tip, Bin {}) -> LT+ (Bin {}, Tip) -> GT+ (Bin size k v l r, Bin size' k' v' l' r') -> compare size size' <> compareK k k' <> compareV v v' <> compareR l l' <> compareR r r' -readMapFPrec :: ReadPrec k -> ReadPrec v -> ReadPrec r -> ReadPrec (MapF k v r)-readMapFPrec readPrecK readPrecV readPrecR =+readMapPrec :: ReadPrec k -> ReadPrec v -> ReadPrec r -> ReadPrec (Map k v r)+readMapPrec readPrecK readPrecV readPrecR = let appPrec = 10 in parens . prec appPrec $- TipF- <$ expectP (Lex.Ident "TipF")- <|> expectP (Lex.Ident "BinF")- *> ( BinF+ Tip+ <$ expectP (Lex.Ident "Tip")+ <|> expectP (Lex.Ident "Bin")+ *> ( Bin <$> step readPrec <*> step readPrecK <*> step readPrecV@@ -135,21 +147,21 @@ <*> step readPrecR ) -showsMapFPrec ::+showsMapPrec :: (Int -> k -> ShowS) -> (Int -> v -> ShowS) -> (Int -> r -> ShowS) -> Int ->- MapF k v r ->+ Map k v r -> ShowS-showsMapFPrec showsPrecK showsPrecV showsPrecR p =+showsMapPrec showsPrecK showsPrecV showsPrecR p = let appPrec = 10 nextPrec = appPrec + 1 in \case- TipF -> showString "TipF"- BinF size k v l r ->+ Tip -> showString "Tip"+ Bin size k v l r -> showParen (nextPrec <= p) $- showString "BinF "+ showString "Bin " . showsPrec nextPrec size . showString " " . showsPrecK nextPrec k@@ -160,30 +172,30 @@ . showString " " . showsPrecR nextPrec r -instance (Eq k, Eq v) => Eq1 (MapF k v) where+instance (Eq k, Eq v) => Eq1 (Map k v) where liftEq = liftEq2 (==) -instance (Eq k) => Eq2 (MapF k) where- liftEq2 = eqMapF (==)+instance (Eq k) => Eq2 (Map k) where+ liftEq2 = eqMap (==) -instance (Ord k, Ord v) => Ord1 (MapF k v) where+instance (Ord k, Ord v) => Ord1 (Map k v) where liftCompare = liftCompare2 compare -instance (Ord k) => Ord2 (MapF k) where- liftCompare2 = compareMapF compare+instance (Ord k) => Ord2 (Map k) where+ liftCompare2 = compareMap compare -- | @since 0.1.2.0-instance (Read k, Read v) => Read1 (MapF k v) where+instance (Read k, Read v) => Read1 (Map k v) where liftReadPrec = liftReadPrec2 readPrec readListPrec -- | @since 0.1.2.0-instance (Read k) => Read2 (MapF k) where+instance (Read k) => Read2 (Map k) where liftReadPrec2 readPrecV _ readPrecR _ =- readMapFPrec readPrec readPrecV readPrecR+ readMapPrec readPrec readPrecV readPrecR -instance (Show k, Show v) => Show1 (MapF k v) where+instance (Show k, Show v) => Show1 (Map k v) where liftShowsPrec = liftShowsPrec2 showsPrec showList -instance (Show k) => Show2 (MapF k) where+instance (Show k) => Show2 (Map k) where liftShowsPrec2 showsPrecV _ showsPrecR _ =- showsMapFPrec showsPrec showsPrecV showsPrecR+ showsMapPrec showsPrec showsPrecV showsPrecR
src/Yaya/Containers/Pattern/Set.hs view
@@ -2,49 +2,57 @@ {-# OPTIONS_GHC -Wno-orphans #-} module Yaya.Containers.Pattern.Set- ( SetF (BinF, TipF),+ ( Set (Bin, Tip), ) where -import "base" Control.Applicative- ( Alternative ((<|>)),- Applicative ((<*>)),- (*>),- )-import "base" Control.Category (Category ((.)))+import "base" Control.Applicative ((*>), (<*>), (<|>))+import "base" Control.Category ((.)) import "base" Data.Bool (Bool (False, True), (&&))-import "base" Data.Eq (Eq ((==)))+import "base" Data.Eq (Eq, (==)) import "base" Data.Foldable (Foldable) import "base" Data.Function (($))-import "base" Data.Functor (Functor (fmap), (<$), (<$>))+import "base" Data.Functor (Functor, (<$), (<$>)) import "base" Data.Functor.Classes- ( Eq1 (liftEq),- Eq2 (liftEq2),- Ord1 (liftCompare),- Ord2 (liftCompare2),- Read1 (liftReadPrec),- Read2 (liftReadPrec2),- Show1 (liftShowsPrec),- Show2 (liftShowsPrec2),+ ( Eq1,+ Eq2,+ Ord1,+ Ord2,+ Read1,+ Read2,+ Show1,+ Show2,+ liftCompare,+ liftCompare2,+ liftEq,+ liftEq2,+ liftReadPrec,+ liftReadPrec2,+ liftShowsPrec,+ liftShowsPrec2, )-import "base" Data.Ord (Ord (compare, (<=)), Ordering (EQ, GT, LT))+import "base" Data.Ord (Ord, Ordering (EQ, GT, LT), compare, (<=)) import "base" Data.Semigroup ((<>)) import "base" Data.Traversable (Traversable) import qualified "base" Data.Tuple as Tuple import "base" GHC.Generics (Generic, Generic1)-import "base" GHC.Read (Read (readListPrec, readPrec), expectP, parens)+import "base" GHC.Read (Read, expectP, parens, readListPrec, readPrec) import "base" Text.ParserCombinators.ReadPrec (prec, step) import qualified "base" Text.Read.Lex as Lex-import "base" Text.Show (Show (showList, showsPrec), showParen, showString)+import "base" Text.Show (Show, showList, showParen, showString, showsPrec) import qualified "containers" Data.Set.Internal as Set import "yaya" Yaya.Fold- ( Projectable (project),- Recursive (cata),- Steppable (embed),+ ( Projectable,+ Recursive,+ Steppable,+ cata,+ embed,+ project, )-import "base" Prelude (Num ((+)))+import qualified "yaya-unsafe" Yaya.Unsafe.Fold as Unsafe+import "base" Prelude ((+)) -data SetF a r = TipF | BinF Set.Size a r r+data Set a r = Tip | Bin Set.Size a r r deriving stock ( Eq, Ord,@@ -58,69 +66,69 @@ Traversable ) -instance Projectable (->) (Set.Set a) (SetF a) where- project Set.Tip = TipF- project (Set.Bin size a l r) = BinF size a l r+instance Projectable (->) (Set.Set a) (Set a) where+ project Set.Tip = Tip+ project (Set.Bin size a l r) = Bin size a l r -instance Recursive (->) (Set.Set a) (SetF a) where- cata φ = φ . fmap (cata φ) . project+instance Recursive (->) (Set.Set a) (Set a) where+ cata = Unsafe.unsafeCata -instance Steppable (->) (Set.Set a) (SetF a) where- embed TipF = Set.Tip- embed (BinF size a l r) = Set.Bin size a l r+instance Steppable (->) (Set.Set a) (Set a) where+ embed Tip = Set.Tip+ embed (Bin size a l r) = Set.Bin size a l r -instance (Eq a) => Eq1 (SetF a) where+instance (Eq a) => Eq1 (Set a) where liftEq = liftEq2 (==) -instance Eq2 SetF where+instance Eq2 Set where liftEq2 f g = Tuple.curry $ \case- (TipF, TipF) -> True- (BinF size a l r, BinF size' a' l' r') ->+ (Tip, Tip) -> True+ (Bin size a l r, Bin size' a' l' r') -> size == size' && f a a' && g l l' && g r r' (_, _) -> False -instance (Ord a) => Ord1 (SetF a) where+instance (Ord a) => Ord1 (Set a) where liftCompare = liftCompare2 compare -instance Ord2 SetF where+instance Ord2 Set where liftCompare2 f g = Tuple.curry $ \case- (TipF, TipF) -> EQ- (TipF, BinF {}) -> LT- (BinF {}, TipF) -> GT- (BinF size a l r, BinF size' a' l' r') ->+ (Tip, Tip) -> EQ+ (Tip, Bin {}) -> LT+ (Bin {}, Tip) -> GT+ (Bin size a l r, Bin size' a' l' r') -> compare size size' <> f a a' <> g l l' <> g r r' -- | @since 0.1.2.0-instance (Read a) => Read1 (SetF a) where+instance (Read a) => Read1 (Set a) where liftReadPrec = liftReadPrec2 readPrec readListPrec -- | @since 0.1.2.0-instance Read2 SetF where+instance Read2 Set where liftReadPrec2 readPrecA _ readPrecR _ = let appPrec = 10 in parens . prec appPrec $- TipF- <$ expectP (Lex.Ident "TipF")- <|> expectP (Lex.Ident "BinF")- *> ( BinF+ Tip+ <$ expectP (Lex.Ident "Tip")+ <|> expectP (Lex.Ident "Bin")+ *> ( Bin <$> step readPrec <*> step readPrecA <*> step readPrecR <*> step readPrecR ) -instance (Show a) => Show1 (SetF a) where+instance (Show a) => Show1 (Set a) where liftShowsPrec = liftShowsPrec2 showsPrec showList -instance Show2 SetF where+instance Show2 Set where liftShowsPrec2 showsPrecA _ showsPrecR _ p = let appPrec = 10 nextPrec = appPrec + 1 in \case- TipF -> showString "TipF"- BinF size a l r ->+ Tip -> showString "Tip"+ Bin size a l r -> showParen (nextPrec <= p) $- showString "BinF "+ showString "Bin " . showsPrec nextPrec size . showString " " . showsPrecA nextPrec a
yaya-containers.cabal view
@@ -3,7 +3,7 @@ -- exception. name: yaya-containers-version: 0.2.0.0+version: 1.0.0.0 synopsis: Pattern functors and instances for types in the containers package. maintainer: Greg Pfeil <greg@technomadic.org> author: Greg Pfeil <greg@technomadic.org>@@ -47,7 +47,7 @@ location: https://github.com/sellout/yaya.git subdir: containers -- NB: This is the repo version, which is distinct from the package version.- tag: v4.0.0+ tag: v5.0.0 custom-setup setup-depends:@@ -141,8 +141,6 @@ base ^>= {4.13.0, 4.14.0, 4.15.0, 4.16.0, 4.17.0, 4.18.0, 4.19.0, 4.20.0, 4.21.0, 4.22.0}, ghc-options: -Weverything- -- This one just reports unfixable things, AFAICT.- -Wno-all-missed-specialisations -- Type inference good. -Wno-missing-local-signatures -- Warns even when `Unsafe` is explicit, not inferred. See@@ -169,6 +167,12 @@ -Wno-missing-poly-kind-signatures -- Inference good. -Wno-missing-role-annotations+ -- remove if the oldest supported version is GHC 9.14.1++ if impl(ghc >= 9.14.1)+ ghc-options:+ -- See+ -- https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0581-namespace-specified-imports.rst#deprecate-use-of-pattern-in-import-export-lists+ -Wno-pattern-namespace-specifier default-extensions: BlockArguments DefaultSignatures@@ -206,7 +210,8 @@ src build-depends: containers ^>= {0.6.2, 0.7, 0.8},- yaya ^>= {0.5.1, 0.6.0, 0.7.0},+ yaya ^>= {0.5.1, 0.6.0, 0.7.0, 1.0.0},+ yaya-unsafe ^>= {0.5.0, 1.0.0}, exposed-modules: Yaya.Containers.Pattern.IntMap Yaya.Containers.Pattern.IntSet