typelevel-1.2.3: Useful type level operations (type families and related operators).

Safe HaskellNone
LanguageHaskell2010

Type.Set

Documentation

type family ToList s where ... Source #

Equations

ToList (Set s) = s 

type family AsSet' (a :: k) Source #

Instances
type AsSet' ([] :: [k]) Source # 
Instance details

Defined in Type.Set

type AsSet' ([] :: [k]) = Set ([] :: [(Any :: Type)])
type AsSet' (l ': ls :: [ke]) Source # 
Instance details

Defined in Type.Set

type AsSet' (l ': ls :: [ke]) = Insert l (AsSet' ls)

type family AsSet (a :: k) Source #

Instances
type AsSet (lst :: [k]) Source # 
Instance details

Defined in Type.Set

type AsSet (lst :: [k]) = AsSet' (Reverse lst)

data Set (a :: [k]) Source #

Instances
type Index (a :: ke) (Set s :: Type) Source # 
Instance details

Defined in Type.Set

type Index (a :: ke) (Set s :: Type) = Index a s
type Insert (a :: k) (Set (s ': ss) :: Type) Source # 
Instance details

Defined in Type.Set

type Insert (a :: k) (Set (s ': ss) :: Type) = (Set :: [k] -> Type) $ If (a == s) (s ': ss) (s ': (Unwrapped (Insert a (Set ss)) :: [k]))
type Insert (a :: k1) (Set ([] :: [k2]) :: Type) Source # 
Instance details

Defined in Type.Set

type Insert (a :: k1) (Set ([] :: [k2]) :: Type) = Set (a ': ([] :: [k1]))
type Unwrapped (Set a :: Type) Source # 
Instance details

Defined in Type.Set

type Unwrapped (Set a :: Type) = a
type Concat (Set set :: Type) (Set (s ': ss) :: Type) Source # 
Instance details

Defined in Type.Set

type Concat (Set set :: Type) (Set (s ': ss) :: Type) = If (In s set) (Concat (Set set) (Set ss)) (Concat (Insert s (Set set)) (Set ss))
type Concat (Set set :: Type) (Set ([] :: [k2]) :: Type) Source # 
Instance details

Defined in Type.Set

type Concat (Set set :: Type) (Set ([] :: [k2]) :: Type) = Set set