packages feed

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 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