Safe Haskell | None |
---|---|
Language | Haskell2010 |
Documentation
type family Interpret (t :: Atom d k) (tys :: LoT d) :: k where ... Source #
Interpret (Var VZ) (t :&&: ts) = t | |
Interpret (Var (VS v)) (t :&&: ts) = Interpret (Var v) ts | |
Interpret (Kon t) tys = t | |
Interpret (f :@: x) tys = Interpret f tys (Interpret x tys) | |
Interpret (c :&: d) tys = (Interpret c tys, Interpret d tys) | |
Interpret (ForAll f) tys = ForAllI f tys | |
Interpret (c :=>>: f) tys = SuchThatI c f tys |
type family Satisfies (cs :: [Atom d Constraint]) (tys :: LoT d) :: Constraint where ... Source #
type family ContainsTyVar (v :: TyVar d k) (t :: Atom d p) :: Bool where ... Source #
ContainsTyVar v (Var v) = True | |
ContainsTyVar v (Var w) = False | |
ContainsTyVar v (Kon t) = False | |
ContainsTyVar v (f :@: x) = Or (ContainsTyVar v f) (ContainsTyVar v x) | |
ContainsTyVar v (x :&: y) = Or (ContainsTyVar v x) (ContainsTyVar v y) | |
ContainsTyVar v (c :=>>: f) = Or (ContainsTyVar v c) (ContainsTyVar v f) | |
ContainsTyVar v (ForAll f) = ContainsTyVar (VS v) f |