@@ -7,7 +7,7 @@ module Data.Type.Set (Set(..), Union, Unionable, union, quicksort, append,
77 Sort, Sortable, (:++), Split(..), Cmp, Filter, Flag(..),
88 Nub, Nubable(..), AsSet, asSet, IsSet, Subset(..),
99 Delete(..), Proxy(..), remove, Remove, (:\),
10− Member) where
10+ Member(..), NonMember, MemberP(..)) where
1111
1212import GHC.TypeLits
1313import Data.Type.Bool
@@ -227,3 +227,10 @@ instance {-# OVERLAPS #-} Member a (a ': s) where
227227
228228instance {-# OVERLAPPABLE #-} Member a s => Member a (b ': s) where
229229 member a (Ext _ xs) = member a xs
230+
231+type family MemberP a s :: Bool where
232+ MemberP a '[] = False
233+ MemberP a (a ': s) = True
234+ MemberP a (b ': s) = MemberP a s
235+
236+type NonMember a s = MemberP a s ~ False