type-level-sets 0.8.6.0 → 0.8.7.0
raw patch · 3 files changed
+16/−4 lines, 3 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.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.Nub (e : f : s) ~ (e : Data.Type.Set.Nub (f : s)), Data.Type.Set.Nubable (f : s)) => Data.Type.Set.Nubable (e : f : s)
- Data.Type.Set: instance Data.Type.Set.Nubable '[e]
- Data.Type.Set: instance Data.Type.Set.Nubable (e : s) => Data.Type.Set.Nubable (e : e : s)
- Data.Type.Set: instance Data.Type.Set.Remove '[] t
- Data.Type.Set: instance Data.Type.Set.Remove (x : xs) x
- Data.Type.Set: instance Data.Type.Set.Split s t st => Data.Type.Set.Split (x : s) (x : t) (x : st)
- Data.Type.Set: instance Data.Type.Set.Split s t st => Data.Type.Set.Split (x : s) t (x : st)
- Data.Type.Set: instance Data.Type.Set.Split s t st => Data.Type.Set.Split s (x : t) (x : st)
- Data.Type.Set: instance Data.Type.Set.Subset s t => Data.Type.Set.Subset (x : s) (x : t)
- Data.Type.Set: instance Data.Type.Set.Subset s t => Data.Type.Set.Subset s (x : t)
+ Data.Type.Set: class Member a s
+ Data.Type.Set: instance forall k (a :: k) (s :: [k]). Data.Type.Set.Member a (a : s)
+ Data.Type.Set: instance forall k (e :: k) (f :: k) (s :: [k]). (Data.Type.Set.Nub (e : f : s) ~ (e : Data.Type.Set.Nub (f : s)), Data.Type.Set.Nubable (f : s)) => Data.Type.Set.Nubable (e : f : s)
+ Data.Type.Set: instance forall k (e :: k) (s :: [k]). Data.Type.Set.Nubable (e : s) => Data.Type.Set.Nubable (e : e : s)
+ Data.Type.Set: instance forall k (e :: k). Data.Type.Set.Nubable '[e]
+ Data.Type.Set: instance forall k (s :: [k]) (t :: [k]) (st :: [k]) (x :: k). Data.Type.Set.Split s t st => Data.Type.Set.Split (x : s) (x : t) (x : st)
+ Data.Type.Set: instance forall k (s :: [k]) (t :: [k]) (x :: k). Data.Type.Set.Subset s t => Data.Type.Set.Subset (x : s) (x : t)
+ Data.Type.Set: instance forall k (t :: k). Data.Type.Set.Remove '[] t
+ Data.Type.Set: instance forall k (x :: k) (xs :: [k]). Data.Type.Set.Remove (x : xs) x
+ Data.Type.Set: instance forall k (y :: k) (xs :: [k]) (x :: k). (((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 forall k1 k2 (a :: k2) (s :: [k1]) (b :: k1). Data.Type.Set.Member a s => Data.Type.Set.Member a (b : s)
+ Data.Type.Set: instance forall k1 k2 (s :: [k2]) (t :: [k1]) (st :: [k1]) (x :: k1). Data.Type.Set.Split s t st => Data.Type.Set.Split s (x : t) (x : st)
+ Data.Type.Set: instance forall k1 k2 (s :: [k2]) (t :: [k1]) (st :: [k2]) (x :: k2). Data.Type.Set.Split s t st => Data.Type.Set.Split (x : s) t (x : st)
+ Data.Type.Set: instance forall k1 k2 (s :: [k2]) (t :: [k1]) (x :: k1). Data.Type.Set.Subset s t => Data.Type.Set.Subset s (x : t)
- Data.Type.Set: data Set (n :: [*])
+ Data.Type.Set: data Set (n :: [k]) :: *
Files
- src/Data/Type/Map.hs +1/−1
- src/Data/Type/Set.hs +14/−2
- type-level-sets.cabal +1/−1
src/Data/Type/Map.hs view
@@ -84,7 +84,7 @@ instance {-# OVERLAPS #-} IsMember v t ((v ':-> t) ': m) where lookp _ (Ext _ x _) = x -instance IsMember v t m => IsMember v t (x ': m) where+instance {-# OVERLAPPABLE #-} IsMember v t m => IsMember v t (x ': m) where lookp v (Ext _ _ m) = lookp v m
src/Data/Type/Set.hs view
@@ -6,7 +6,8 @@ module Data.Type.Set (Set(..), Union, Unionable, union, quicksort, append, Sort, Sortable, (:++), Split(..), Cmp, Filter, Flag(..), Nub, Nubable(..), AsSet, asSet, IsSet, Subset(..),- Delete(..), Proxy(..), remove, Remove, (:\)) where+ Delete(..), Proxy(..), remove, Remove, (:\),+ Member) where import GHC.TypeLits import Data.Type.Bool@@ -15,7 +16,7 @@ data Proxy (p :: k) = Proxy -- Value-level 'Set' representation, essentially a list-data Set (n :: [*]) where+data Set (n :: [k]) :: * where {--| Construct an empty set -} Empty :: Set '[] {--| Extend a set with an element -}@@ -215,3 +216,14 @@ {-| Open-family for the ordering operation in the sort -} type family Cmp (a :: k) (b :: k) :: Ordering++{-| Membership of an element in a set, with an acommanying+ value-level function that returns a bool -}+class Member a s where+ member :: Proxy a -> Set s -> Bool++instance {-# OVERLAPS #-} Member a (a ': s) where+ member _ (Ext x _) = True++instance {-# OVERLAPPABLE #-} Member a s => Member a (b ': s) where+ member a (Ext _ xs) = member a xs
type-level-sets.cabal view
@@ -1,5 +1,5 @@ name: type-level-sets-version: 0.8.6.0+version: 0.8.7.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