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

Safe HaskellNone
LanguageHaskell2010

Type.Set

Documentation

data Set a Source

Instances

type Insert * k a (Set k ((:) k s ss)) = ($) * [k] (Set k) (If [k] ((==) k a s) ((:) k s ss) ((:) k s (Unwrapped [k] * (Insert * k a (Set k ss))))) Source 
type Insert * k a (Set k1 ([] k1)) = Set k ((:) k a ([] k)) Source 
type Index k * a (Set k1 s) = Index k [k1] a s Source 
type Concat * (Set k set) (Set k1 ((:) k1 s ss)) = If * (In k1 [k] s set) (Concat * (Set k set) (Set k1 ss)) (Concat * (Insert * k1 s (Set k set)) (Set k1 ss)) Source 
type Concat * (Set k set) (Set k1 ([] k1)) = Set k set Source 
type Unwrapped [k] * (Set k a) = a Source 

type family AsSet a Source

Instances

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

type family AsSet' a Source

Instances

type AsSet' [k] ([] k) = Set AnyK ([] AnyK) Source 
type AsSet' [k] ((:) k l ls) = Insert * k l (AsSet' [k] ls) Source 

type family ToList s Source

Equations

ToList (Set s) = s