packages feed

type-level-sets 0.8.5.0 → 0.8.6.0

raw patch · 2 files changed

+23/−6 lines, 2 filesdep ~basePVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependency ranges changed: base

API changes (from Hackage documentation)

- Data.Type.Map: instance (Data.Type.Map.Combinable v v', Data.Type.Map.Nubable (k 'Data.Type.Map.:-> Data.Type.Map.Combine v v' : s)) => Data.Type.Map.Nubable (k 'Data.Type.Map.:-> v : k 'Data.Type.Map.:-> v' : s)
- Data.Type.Map: instance (Data.Type.Map.Sortable (Data.Type.Set.Filter 'Data.Type.Set.FMin (k 'Data.Type.Map.:-> v) xs), Data.Type.Map.Sortable (Data.Type.Set.Filter 'Data.Type.Set.FMax (k 'Data.Type.Map.:-> v) xs), Data.Type.Map.FilterV 'Data.Type.Set.FMin k v xs, Data.Type.Map.FilterV 'Data.Type.Set.FMax k v xs) => Data.Type.Map.Sortable (k 'Data.Type.Map.:-> v : xs)
- Data.Type.Map: instance (GHC.TypeLits.KnownSymbol k, GHC.Classes.Eq (Data.Type.Map.Var k), GHC.Classes.Eq v, GHC.Classes.Eq (Data.Type.Map.Map s)) => GHC.Classes.Eq (Data.Type.Map.Map (k 'Data.Type.Map.:-> v : s))
- Data.Type.Map: instance (GHC.TypeLits.KnownSymbol k, GHC.Show.Show v, Data.Type.Map.Show' (Data.Type.Map.Map s)) => Data.Type.Map.Show' (Data.Type.Map.Map (k 'Data.Type.Map.:-> v : s))
- Data.Type.Map: instance (GHC.TypeLits.KnownSymbol k, GHC.Show.Show v, Data.Type.Map.Show' (Data.Type.Map.Map s)) => GHC.Show.Show (Data.Type.Map.Map (k 'Data.Type.Map.:-> v : s))
- Data.Type.Map: instance Data.Type.Map.IsMember v t (v 'Data.Type.Map.:-> t : m)
- Data.Type.Map: instance Data.Type.Map.Updatable v t (v 'Data.Type.Map.:-> s : m) (v 'Data.Type.Map.:-> t : m)
- Data.Type.Map: instance Data.Type.Map.Updatable v t m n => Data.Type.Map.Updatable v t (w 'Data.Type.Map.:-> y : m) (w 'Data.Type.Map.:-> y : n)
+ Data.Type.Map: instance (Data.Type.Map.Combinable v v', Data.Type.Map.Nubable ((k 'Data.Type.Map.:-> Data.Type.Map.Combine v v') : s)) => Data.Type.Map.Nubable ((k 'Data.Type.Map.:-> v) : (k 'Data.Type.Map.:-> v') : s)
+ Data.Type.Map: instance (Data.Type.Map.Sortable (Data.Type.Set.Filter 'Data.Type.Set.FMin (k 'Data.Type.Map.:-> v) xs), Data.Type.Map.Sortable (Data.Type.Set.Filter 'Data.Type.Set.FMax (k 'Data.Type.Map.:-> v) xs), Data.Type.Map.FilterV 'Data.Type.Set.FMin k v xs, Data.Type.Map.FilterV 'Data.Type.Set.FMax k v xs) => Data.Type.Map.Sortable ((k 'Data.Type.Map.:-> v) : xs)
+ Data.Type.Map: instance (GHC.TypeLits.KnownSymbol k, GHC.Classes.Eq (Data.Type.Map.Var k), GHC.Classes.Eq v, GHC.Classes.Eq (Data.Type.Map.Map s)) => GHC.Classes.Eq (Data.Type.Map.Map ((k 'Data.Type.Map.:-> v) : s))
+ Data.Type.Map: instance (GHC.TypeLits.KnownSymbol k, GHC.Show.Show v, Data.Type.Map.Show' (Data.Type.Map.Map s)) => Data.Type.Map.Show' (Data.Type.Map.Map ((k 'Data.Type.Map.:-> v) : s))
+ Data.Type.Map: instance (GHC.TypeLits.KnownSymbol k, GHC.Show.Show v, Data.Type.Map.Show' (Data.Type.Map.Map s)) => GHC.Show.Show (Data.Type.Map.Map ((k 'Data.Type.Map.:-> v) : s))
+ Data.Type.Map: instance Data.Type.Map.IsMember v t ((v 'Data.Type.Map.:-> t) : m)
+ Data.Type.Map: instance Data.Type.Map.Updatable v t ((v 'Data.Type.Map.:-> s) : m) ((v 'Data.Type.Map.:-> t) : m)
+ Data.Type.Map: instance Data.Type.Map.Updatable v t m n => Data.Type.Map.Updatable v t ((w 'Data.Type.Map.:-> y) : m) ((w 'Data.Type.Map.:-> y) : n)
+ Data.Type.Set: class Remove s t
+ Data.Type.Set: instance (((y : xs) Data.Type.Set.:\ x) ~ (y : (xs Data.Type.Set.:\ x)), Data.Type.Set.Remove xs x) => Data.Type.Set.Remove (y : xs) x
+ Data.Type.Set: instance Data.Type.Set.Remove '[] t
+ Data.Type.Set: instance Data.Type.Set.Remove (x : xs) x
+ Data.Type.Set: remove :: Remove s t => Set s -> Proxy t -> Set (s :\ t)
- Data.Type.Map: type IsMap s = s ~ Nub (Sort s)
+ Data.Type.Map: type IsMap s = (s ~ Nub (Sort s))
- Data.Type.Set: type IsSet s = s ~ Nub (Sort s)
+ Data.Type.Set: type IsSet s = (s ~ Nub (Sort s))

Files

src/Data/Type/Set.hs view
@@ -6,7 +6,7 @@ module Data.Type.Set (Set(..), Union, Unionable, union, quicksort, append,                       Sort, Sortable, (:++), Split(..), Cmp, Filter, Flag(..),                       Nub, Nubable(..), AsSet, asSet, IsSet, Subset(..),-                      Delete(..), Proxy(..)) where+                      Delete(..), Proxy(..), remove, Remove, (:\)) where  import GHC.TypeLits import Data.Type.Bool@@ -73,6 +73,25 @@ append Empty x = x append (Ext e xs) ys = Ext e (append xs ys) +{-| Delete elements from a set -}+type family (m :: [k]) :\ (x :: k) :: [k] where+     '[]       :\ x = '[]+     (x ': xs) :\ x = xs+     (y ': xs) :\ x = y ': (xs :\ x)++class Remove s t where+  remove :: Set s -> Proxy t -> Set (s :\ t)++instance Remove '[] t where+  remove Empty Proxy = Empty++instance {-# OVERLAPS #-} Remove (x ': xs) x where+  remove (Ext _ xs) Proxy = xs++instance {-# OVERLAPPABLE #-} (((y : xs) :\ x) ~ (y : (xs :\ x)), Remove xs x)+      => Remove (y ': xs) x where+  remove (Ext y xs) (x@Proxy) = Ext y (remove xs x)+ {-| Splitting a union a set, given the sets we want to split it into -} class Split s t st where    -- where st ~ Union s t@@ -93,8 +112,6 @@    split (Ext x st) = let (s, t) = split st                       in  (s, Ext x t) -- {-| Remove duplicates from a sorted list -} type family Nub t where     Nub '[]           = '[]@@ -130,10 +147,10 @@ instance Subset '[] '[] where    subset xs = Empty -instance Subset s t => Subset s (x ': t) where+instance {-# OVERLAPPABLE #-} Subset s t => Subset s (x ': t) where    subset (Ext _ xs) = subset xs -instance Subset s t => Subset (x ': s) (x ': t) where+instance {-# OVERLAPS #-} Subset s t => Subset (x ': s) (x ': t) where    subset (Ext x xs) = Ext x (subset xs)  
type-level-sets.cabal view
@@ -1,5 +1,5 @@ name:                   type-level-sets-version:                0.8.5.0+version:                0.8.6.0 synopsis:               Type-level sets and finite maps (with value-level counterparts) description:                This package provides type-level sets (no duplicates, sorted to provide a normal form) via 'Set' and type-level