| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Data.Vinyl.TypeLevel
Synopsis
- data Nat
- class NatToInt (n :: Nat) where
- class IndexWitnesses (is :: [Nat]) where
- indexWitnesses :: [Int]
- type family Fst (a :: (k1, k2)) :: k1 where ...
- type family Snd (a :: (k1, k2)) :: k2 where ...
- type family RLength (xs :: [a]) :: Nat where ...
- type family RIndex (r :: k) (rs :: [k]) :: Nat where ...
- type family RImage (rs :: [k]) (ss :: [k]) :: [Nat] where ...
- type family RDelete (r :: a) (rs :: [a]) :: [a] where ...
- type family RecAll (f :: u -> Type) (rs :: [u]) (c :: Type -> Constraint) where ...
- type family (as :: [k]) ++ (bs :: [k]) :: [k] where ...
- type family AllConstrained (c :: u -> Constraint) (ts :: [u]) where ...
- class AllSatisfied (cs :: k) (t :: k1)
- type family AllAllSat (cs :: k) (ts :: [k1]) where ...
- type family ApplyToField (t :: Type -> Type) (a :: k1) = (r :: k1) | r -> k1 t a where ...
- type family MapTyCon (t :: Type -> Type) (xs :: [a]) = (r :: [a]) | r -> a xs where ...
- class Coercible (f x) (g x) => Similar (f :: k1 -> k) (g :: k1 -> k) (x :: k1)
Documentation
A mere approximation of the natural numbers. And their image as lifted by
-XDataKinds corresponds to the actual natural numbers.
Instances
| RecSubset (Rec :: (k -> Type) -> [k] -> Type) ('[] :: [k]) (ss :: [k]) ('[] :: [Nat]) Source # | |
Defined in Data.Vinyl.Lens Methods rsubsetC :: forall g (f :: k -> Type). (Functor g, RecSubsetFCtx (Rec :: (k -> Type) -> [k] -> Type) f) => (Rec f ('[] :: [k]) -> g (Rec f ('[] :: [k]))) -> Rec f ss -> g (Rec f ss) Source # rcastC :: forall (f :: k -> Type). RecSubsetFCtx (Rec :: (k -> Type) -> [k] -> Type) f => Rec f ss -> Rec f ('[] :: [k]) Source # rreplaceC :: forall (f :: k -> Type). RecSubsetFCtx (Rec :: (k -> Type) -> [k] -> Type) f => Rec f ('[] :: [k]) -> Rec f ss -> Rec f ss Source # | |
| (RElem r ss i, RSubset rs ss is) => RecSubset (Rec :: (k -> Type) -> [k] -> Type) (r ': rs :: [k]) (ss :: [k]) (i ': is) Source # | |
Defined in Data.Vinyl.Lens Methods rsubsetC :: forall g (f :: k -> Type). (Functor g, RecSubsetFCtx (Rec :: (k -> Type) -> [k] -> Type) f) => (Rec f (r ': rs) -> g (Rec f (r ': rs))) -> Rec f ss -> g (Rec f ss) Source # rcastC :: forall (f :: k -> Type). RecSubsetFCtx (Rec :: (k -> Type) -> [k] -> Type) f => Rec f ss -> Rec f (r ': rs) Source # rreplaceC :: forall (f :: k -> Type). RecSubsetFCtx (Rec :: (k -> Type) -> [k] -> Type) f => Rec f (r ': rs) -> Rec f ss -> Rec f ss Source # | |
| IndexWitnesses ('[] :: [Nat]) Source # | |
Defined in Data.Vinyl.TypeLevel Methods indexWitnesses :: [Int] Source # | |
| (IndexWitnesses is, NatToInt i) => IndexWitnesses (i ': is) Source # | |
Defined in Data.Vinyl.TypeLevel Methods indexWitnesses :: [Int] Source # | |
class IndexWitnesses (is :: [Nat]) where Source #
Methods
indexWitnesses :: [Int] Source #
Instances
| IndexWitnesses ('[] :: [Nat]) Source # | |
Defined in Data.Vinyl.TypeLevel Methods indexWitnesses :: [Int] Source # | |
| (IndexWitnesses is, NatToInt i) => IndexWitnesses (i ': is) Source # | |
Defined in Data.Vinyl.TypeLevel Methods indexWitnesses :: [Int] Source # | |
type family Fst (a :: (k1, k2)) :: k1 where ... Source #
Project the first component of a type-level tuple.
Equations
| Fst ('(x, y) :: (k1, k2)) = x |
type family Snd (a :: (k1, k2)) :: k2 where ... Source #
Project the second component of a type-level tuple.
Equations
| Snd ('(x, y) :: (k1, k2)) = y |
type family RIndex (r :: k) (rs :: [k]) :: Nat where ... Source #
A partial relation that gives the index of a value in a list.
type family RImage (rs :: [k]) (ss :: [k]) :: [Nat] where ... Source #
A partial relation that gives the indices of a sublist in a larger list.
type family RDelete (r :: a) (rs :: [a]) :: [a] where ... Source #
Remove the first occurrence of a type from a type-level list.
type family RecAll (f :: u -> Type) (rs :: [u]) (c :: Type -> Constraint) where ... Source #
A constraint-former which applies to every field in a record.
type family AllConstrained (c :: u -> Constraint) (ts :: [u]) where ... Source #
Constraint that all types in a type-level list satisfy a constraint.
Equations
| AllConstrained (c :: u -> Constraint) ('[] :: [u]) = () | |
| AllConstrained (c :: u -> Constraint) (t ': ts :: [u]) = (c t, AllConstrained c ts) |
class AllSatisfied (cs :: k) (t :: k1) Source #
Constraint that each Constraint in a type-level list is satisfied by a particular type.
Instances
| AllSatisfied ('[] :: [a]) (t :: k) Source # | |
Defined in Data.Vinyl.TypeLevel | |
| (c t, AllSatisfied cs t) => AllSatisfied (c ': cs :: [k -> Constraint]) (t :: k) Source # | |
Defined in Data.Vinyl.TypeLevel | |
type family AllAllSat (cs :: k) (ts :: [k1]) where ... Source #
Constraint that all types in a type-level list satisfy each constraint from a list of constraints.
AllAllSat cs ts should be equivalent to AllConstrained
(AllSatisfied cs) ts if partial application of type families were
legal.
Equations
| AllAllSat (cs :: k1) ('[] :: [k2]) = () | |
| AllAllSat (cs :: k1) (t ': ts :: [k2]) = (AllSatisfied cs t, AllAllSat cs ts) |
type family ApplyToField (t :: Type -> Type) (a :: k1) = (r :: k1) | r -> k1 t a where ... Source #
Apply a type constructor to a record index. Record indexes are
either Type or (. In the latter case, the type
constructor is applied to the second component of the tuple.Symbol, Type)
Equations
| ApplyToField t ('(s, x) :: (k, Type)) = '(s, t x) | |
| ApplyToField t (x :: Type) = t x |