Copyright | (C) 2019 Csongor Kiss |
---|---|
License | BSD3 |
Maintainer | Csongor Kiss <kiss.csongor.kiss@gmail.com> |
Stability | experimental |
Portability | non-portable |
Safe Haskell | None |
Language | Haskell2010 |
The library internals are exposed through this module. Please keep in mind that everything here is subject to change irrespective of the the version numbers.
Synopsis
- type Indexed t = Indexed' t 0
- type family Infer (s :: *) (a' :: *) (b :: *) :: * where ...
- data PTag = PTag
- type family P :: Nat -> k -> PTag -> k
- type family LookupParam (a :: k) (p :: Nat) :: Maybe Nat where ...
- type family ArgAt (t :: k) (n :: Nat) :: j where ...
- type family ArgCount (t :: k) :: Nat where ...
- class UnifyHead (a :: k) (b :: k)
- type family HasTotalFieldP (field :: Symbol) f :: Maybe Type where ...
- type family HasTotalTypeP (typ :: Type) f :: Maybe Type where ...
- type family HasTotalPositionP (pos :: Nat) f :: Maybe Type where ...
- data Pos (p :: Nat)
- type family HasPartialTypeP a f :: Bool where ...
- type family HasCtorP (ctor :: Symbol) f :: Bool where ...
- type family GTypes (rep :: Type -> Type) :: [Type] where ...
- type family CollectTotalType t f :: TypeStat where ...
- type family CollectPartialType t f :: [Symbol] where ...
- type family CollectField t f :: TypeStat where ...
- type family CollectFieldsOrdered (r :: * -> *) :: [Symbol] where ...
- data TypeStat = TypeStat {
- _containsNone :: [Symbol]
- _containsMultiple :: [Symbol]
- _containsOne :: [Symbol]
- type family (xs :: [Symbol]) \\ (ys :: [Symbol]) :: [Symbol] where ...
- type family ShowSymbols (ctors :: [Symbol]) :: ErrorMessage where ...
- type Indexed t = Indexed' t 0
- type family Infer (s :: *) (a' :: *) (b :: *) :: * where ...
- data PTag = PTag
- type family P :: Nat -> k -> PTag -> k
- type family LookupParam (a :: k) (p :: Nat) :: Maybe Nat where ...
- type family ArgAt (t :: k) (n :: Nat) :: j where ...
- type family ArgCount (t :: k) :: Nat where ...
- class UnifyHead (a :: k) (b :: k)
- type family CollectTotalType t f :: TypeStat where ...
- type family CollectPartialType t f :: [Symbol] where ...
- type family CollectField t f :: TypeStat where ...
- type family CollectFieldsOrdered (r :: * -> *) :: [Symbol] where ...
- data TypeStat = TypeStat {
- _containsNone :: [Symbol]
- _containsMultiple :: [Symbol]
- _containsOne :: [Symbol]
- type family (xs :: [Symbol]) \\ (ys :: [Symbol]) :: [Symbol] where ...
- type family HasTotalFieldP (field :: Symbol) f :: Maybe Type where ...
- type family HasTotalTypeP (typ :: Type) f :: Maybe Type where ...
- type family HasTotalPositionP (pos :: Nat) f :: Maybe Type where ...
- data Pos (p :: Nat)
- type family HasPartialTypeP a f :: Bool where ...
- type family HasCtorP (ctor :: Symbol) f :: Bool where ...
- type family GTypes (rep :: Type -> Type) :: [Type] where ...
- data Void
- data Void1 a
- data Void2 a b
- type family NoGeneric (a :: Type) (ctxt :: [ErrorMessage]) :: Constraint where ...
- type family Defined (break :: Type -> Type) (err :: Constraint) (a :: k) :: k where ...
- type family Defined_list (break :: [*]) (err :: Constraint) (a :: k) :: k where ...
- type family QuoteType (typ :: k) :: ErrorMessage where ...
- type family PrettyError (ctxt :: [ErrorMessage]) :: k where ...
- class GAsConstructor (ctor :: Symbol) s t a b | ctor s -> a, ctor t -> b where
- _GCtor :: Prism (s x) (t x) a b
- type GAsConstructor' ctor s a = GAsConstructor ctor s s a a
- class GAsType (f :: Type -> Type) (as :: [Type]) where
- class GAsSubtype (subf :: Type -> Type) (supf :: Type -> Type) where
- _GSub :: Prism' (supf x) (subf x)
- type (<?) x y = Not (y <=? x)
- type family Size f :: Nat where ...
- type family CRep (a :: Type) :: G where ...
- class GLens (pred :: Pred) (s :: Type -> Type) (t :: Type -> Type) a b | s pred -> a, t pred -> b where
- glens :: Lens (s x) (t x) a b
- type GLens' pred s a = GLens pred s s a a
- type TyFun a b = a -> b -> Type
- type family Eval (f :: TyFun a b) (x :: a) :: b
- class GUpcast (sub :: Type -> Type) (sup :: Type -> Type) where
- gupcast :: sub p -> sup p
- class GSmash sub sup where
- gsmash :: sup p -> sub p -> sub p
- class GHasConstraints (c :: * -> * -> Constraint) s t where
- gconstraints :: TraversalC c (s x) (t x)
- class GHasConstraints' (c :: * -> Constraint) (f :: * -> *) where
- gconstraints' :: forall g x. Applicative g => (forall a. c a => a -> g a) -> f x -> g (f x)
- class GIsList (f :: Type -> Type) (g :: Type -> Type) (as :: [Type]) (bs :: [Type]) | f -> as, g -> bs, bs f -> g, as g -> f where
- class IndexList (i :: Nat) as bs a b | i as -> a, i bs -> b, i as b -> bs, i bs a -> as where
- data HList (as :: [Type]) where
- type family (as :: [k]) ++ (bs :: [k]) :: [k] where ...
- class Elem (as :: [(k, Type)]) (key :: k) (i :: Nat) a | as key -> i a
- class ListTuple (tuple :: Type) (as :: [Type]) | as -> tuple where
- type ListToTuple as :: Type
- tupled :: Iso' (HList as) tuple
- tupleToList :: tuple -> HList as
- listToTuple :: HList as -> tuple
- type family TupleToList a where ...
- type family Param :: Nat -> k where ...
- newtype Rec (p :: Type) a x = Rec {}
- class (Coercible (Rep a) (RepN a), Generic a) => GenericN (a :: Type) where
- data Exchange a b s t = Exchange (s -> a) (b -> t)
- type Iso' s a = forall p f. (Profunctor p, Functor f) => p a (f a) -> p s (f s)
- type Iso s t a b = forall p f. (Profunctor p, Functor f) => p a (f b) -> p s (f t)
- fromIso :: Iso s t a b -> Iso b a t s
- withIso :: Iso s t a b -> ((s -> a) -> (b -> t) -> r) -> r
- repIso :: (Generic a, Generic b) => Iso a b (Rep a x) (Rep b x)
- mIso :: Iso (M1 i c f p) (M1 i c g p) (f p) (g p)
- kIso :: Iso (K1 r a p) (K1 r b p) a b
- recIso :: Iso (Rec r a p) (Rec r b p) a b
- prodIso :: Iso ((a :*: b) x) ((a' :*: b') x) (a x, b x) (a' x, b' x)
- iso :: (s -> a) -> (b -> t) -> Iso s t a b
- type Lens' s a = Lens s s a a
- type Lens s t a b = forall f. Functor f => (a -> f b) -> s -> f t
- view :: ((a -> Const a a) -> s -> Const a s) -> s -> a
- (^.) :: s -> ((a -> Const a a) -> s -> Const a s) -> a
- (.~) :: ((a -> Identity b) -> s -> Identity t) -> b -> s -> t
- set :: Lens s t a b -> b -> s -> t
- over :: ((a -> Identity b) -> s -> Identity t) -> (a -> b) -> s -> t
- lens2lensvl :: ALens a b s t -> Lens s t a b
- ravel :: (ALens a b a b -> ALens a b s t) -> Lens s t a b
- lens :: (s -> a) -> ((s, b) -> t) -> Lens s t a b
- type Prism s t a b = forall p f. (Choice p, Applicative f) => p a (f b) -> p s (f t)
- type Prism' s a = Prism s s a a
- (^?) :: s -> ((a -> Const (First a) a) -> s -> Const (First a) s) -> Maybe a
- match :: Prism s t a b -> s -> Either t a
- (#) :: (Tagged b (Identity b) -> Tagged t (Identity t)) -> b -> t
- prism :: (b -> t) -> (s -> Either t a) -> Prism s t a b
- prismRavel :: (Market a b a b -> Market a b s t) -> Prism s t a b
- type APrismVL s t a b = Market a b a (Identity b) -> Market a b s (Identity t)
- withPrism :: APrismVL s t a b -> ((b -> t) -> (s -> Either t a) -> r) -> r
- prism2prismvl :: Market a b s t -> Prism s t a b
- build :: (Tagged b (Identity b) -> Tagged t (Identity t)) -> b -> t
- type Traversal' s a = forall f. Applicative f => (a -> f a) -> s -> f s
- type TraversalC (c :: * -> * -> Constraint) s t = forall f. Applicative f => (forall a b. c a b => a -> f b) -> s -> f t
- type TraversalC' (c :: * -> Constraint) s = forall f. Applicative f => (forall a. c a => a -> f a) -> s -> f s
- type Traversal s t a b = forall f. Applicative f => (a -> f b) -> s -> f t
- type LensLikeC c f s = (forall a. c a => a -> f a) -> s -> f s
- confusing :: Applicative f => Traversal s t a b -> (a -> f b) -> s -> f t
- confusingC :: forall c f s. Applicative f => TraversalC' c s -> LensLikeC c f s
- liftCurriedYoneda :: Applicative f => f a -> Curried (Yoneda f) a
- yap :: Applicative f => Yoneda f (a -> b) -> f a -> Yoneda f b
- newtype Curried f a = Curried {
- runCurried :: forall r. f (a -> r) -> f r
- liftCurried :: Applicative f => f a -> Curried f a
- lowerCurried :: Applicative f => Curried f a -> f a
- newtype Yoneda f a = Yoneda {
- runYoneda :: forall b. (a -> b) -> f b
- liftYoneda :: Functor f => f a -> Yoneda f a
- lowerYoneda :: Yoneda f a -> f a
Documentation
type family LookupParam (a :: k) (p :: Nat) :: Maybe Nat where ... Source #
LookupParam (param (n :: Nat)) m = Nothing | |
LookupParam (a (_ (m :: Nat))) n = IfEq m n (Just 0) (MaybeAdd (LookupParam a n) 1) | |
LookupParam (a _) n = MaybeAdd (LookupParam a n) 1 | |
LookupParam a _ = Nothing |
class UnifyHead (a :: k) (b :: k) Source #
Ensure that the types a
and b
are both applications of the same
constructor. The arguments may be different.
Instances
a ~ b => UnifyHead (a :: k) (b :: k) Source # | |
Defined in Data.Generics.Internal.Families.Changing | |
(gb ~ g b, UnifyHead f g) => UnifyHead (f a :: k2) (gb :: k2) Source # | |
Defined in Data.Generics.Internal.Families.Changing |
type family HasTotalFieldP (field :: Symbol) f :: Maybe Type where ... Source #
HasTotalFieldP field (S1 (MetaSel (Just field) _ _ _) (Rec0 t)) = Just t | |
HasTotalFieldP field (l :*: r) = Alt (HasTotalFieldP field l) (HasTotalFieldP field r) | |
HasTotalFieldP field (l :+: r) = Both (HasTotalFieldP field l) (HasTotalFieldP field r) | |
HasTotalFieldP field (S1 _ _) = Nothing | |
HasTotalFieldP field (C1 _ f) = HasTotalFieldP field f | |
HasTotalFieldP field (D1 _ f) = HasTotalFieldP field f | |
HasTotalFieldP field (K1 _ _) = Nothing | |
HasTotalFieldP field U1 = Nothing | |
HasTotalFieldP field V1 = Nothing |
type family HasTotalTypeP (typ :: Type) f :: Maybe Type where ... Source #
HasTotalTypeP typ (S1 _ (K1 _ typ)) = Just typ | |
HasTotalTypeP typ (l :*: r) = Alt (HasTotalTypeP typ l) (HasTotalTypeP typ r) | |
HasTotalTypeP typ (l :+: r) = Both (HasTotalTypeP typ l) (HasTotalTypeP typ r) | |
HasTotalTypeP typ (S1 _ _) = Nothing | |
HasTotalTypeP typ (C1 _ f) = HasTotalTypeP typ f | |
HasTotalTypeP typ (D1 _ f) = HasTotalTypeP typ f | |
HasTotalTypeP typ (K1 _ _) = Nothing | |
HasTotalTypeP typ U1 = Nothing | |
HasTotalTypeP typ V1 = Nothing |
type family HasTotalPositionP (pos :: Nat) f :: Maybe Type where ... Source #
HasTotalPositionP pos (S1 _ (K1 (Pos pos) t)) = Just t | |
HasTotalPositionP pos (l :*: r) = Alt (HasTotalPositionP pos l) (HasTotalPositionP pos r) | |
HasTotalPositionP pos (l :+: r) = Both (HasTotalPositionP pos l) (HasTotalPositionP pos r) | |
HasTotalPositionP pos (S1 _ _) = Nothing | |
HasTotalPositionP pos (C1 _ f) = HasTotalPositionP pos f | |
HasTotalPositionP pos (D1 _ f) = HasTotalPositionP pos f | |
HasTotalPositionP pos (K1 _ _) = Nothing | |
HasTotalPositionP pos U1 = Nothing | |
HasTotalPositionP pos V1 = Nothing |
type family HasPartialTypeP a f :: Bool where ... Source #
HasPartialTypeP t (l :+: r) = HasPartialTypeP t l || HasPartialTypeP t r | |
HasPartialTypeP t (C1 m f) = t == GTypes f | |
HasPartialTypeP t (M1 _ _ f) = HasPartialTypeP t f | |
HasPartialTypeP t _ = False |
type family CollectTotalType t f :: TypeStat where ... Source #
CollectTotalType t (C1 (MetaCons ctor _ _) f) = AddToStat ctor (CountType t f) EmptyStat | |
CollectTotalType t (M1 _ _ r) = CollectTotalType t r | |
CollectTotalType t (l :+: r) = MergeStat (CollectTotalType t l) (CollectTotalType t r) |
type family CollectPartialType t f :: [Symbol] where ... Source #
CollectPartialType t (l :+: r) = CollectPartialType t l ++ CollectPartialType t r | |
CollectPartialType t (C1 (MetaCons ctor _ _) f) = If (t == GTypes f) '[ctor] '[] | |
CollectPartialType t (D1 _ f) = CollectPartialType t f |
type family CollectField t f :: TypeStat where ... Source #
CollectField t (C1 (MetaCons ctor _ _) f) = AddToStat ctor (CountField t f) EmptyStat | |
CollectField t (M1 _ _ r) = CollectField t r | |
CollectField t (l :+: r) = MergeStat (CollectField t l) (CollectField t r) |
type family CollectFieldsOrdered (r :: * -> *) :: [Symbol] where ... Source #
CollectFieldsOrdered (l :*: r) = Merge (CollectFieldsOrdered l) (CollectFieldsOrdered r) | |
CollectFieldsOrdered (S1 (MetaSel (Just name) _ _ _) _) = '[name] | |
CollectFieldsOrdered (M1 _ m a) = CollectFieldsOrdered a | |
CollectFieldsOrdered _ = '[] |
TypeStat | |
|
type family ShowSymbols (ctors :: [Symbol]) :: ErrorMessage where ... Source #
ShowSymbols '[] = Text "" | |
ShowSymbols (c ': cs) = (Text "\8226 " :<>: Text c) :$$: ShowSymbols cs |
type family LookupParam (a :: k) (p :: Nat) :: Maybe Nat where ... Source #
LookupParam (param (n :: Nat)) m = Nothing | |
LookupParam (a (_ (m :: Nat))) n = IfEq m n (Just 0) (MaybeAdd (LookupParam a n) 1) | |
LookupParam (a _) n = MaybeAdd (LookupParam a n) 1 | |
LookupParam a _ = Nothing |
class UnifyHead (a :: k) (b :: k) Source #
Ensure that the types a
and b
are both applications of the same
constructor. The arguments may be different.
Instances
a ~ b => UnifyHead (a :: k) (b :: k) Source # | |
Defined in Data.Generics.Internal.Families.Changing | |
(gb ~ g b, UnifyHead f g) => UnifyHead (f a :: k2) (gb :: k2) Source # | |
Defined in Data.Generics.Internal.Families.Changing |
type family CollectTotalType t f :: TypeStat where ... Source #
CollectTotalType t (C1 (MetaCons ctor _ _) f) = AddToStat ctor (CountType t f) EmptyStat | |
CollectTotalType t (M1 _ _ r) = CollectTotalType t r | |
CollectTotalType t (l :+: r) = MergeStat (CollectTotalType t l) (CollectTotalType t r) |
type family CollectPartialType t f :: [Symbol] where ... Source #
CollectPartialType t (l :+: r) = CollectPartialType t l ++ CollectPartialType t r | |
CollectPartialType t (C1 (MetaCons ctor _ _) f) = If (t == GTypes f) '[ctor] '[] | |
CollectPartialType t (D1 _ f) = CollectPartialType t f |
type family CollectField t f :: TypeStat where ... Source #
CollectField t (C1 (MetaCons ctor _ _) f) = AddToStat ctor (CountField t f) EmptyStat | |
CollectField t (M1 _ _ r) = CollectField t r | |
CollectField t (l :+: r) = MergeStat (CollectField t l) (CollectField t r) |
type family CollectFieldsOrdered (r :: * -> *) :: [Symbol] where ... Source #
CollectFieldsOrdered (l :*: r) = Merge (CollectFieldsOrdered l) (CollectFieldsOrdered r) | |
CollectFieldsOrdered (S1 (MetaSel (Just name) _ _ _) _) = '[name] | |
CollectFieldsOrdered (M1 _ m a) = CollectFieldsOrdered a | |
CollectFieldsOrdered _ = '[] |
TypeStat | |
|
type family HasTotalFieldP (field :: Symbol) f :: Maybe Type where ... Source #
HasTotalFieldP field (S1 (MetaSel (Just field) _ _ _) (Rec0 t)) = Just t | |
HasTotalFieldP field (l :*: r) = Alt (HasTotalFieldP field l) (HasTotalFieldP field r) | |
HasTotalFieldP field (l :+: r) = Both (HasTotalFieldP field l) (HasTotalFieldP field r) | |
HasTotalFieldP field (S1 _ _) = Nothing | |
HasTotalFieldP field (C1 _ f) = HasTotalFieldP field f | |
HasTotalFieldP field (D1 _ f) = HasTotalFieldP field f | |
HasTotalFieldP field (K1 _ _) = Nothing | |
HasTotalFieldP field U1 = Nothing | |
HasTotalFieldP field V1 = Nothing |
type family HasTotalTypeP (typ :: Type) f :: Maybe Type where ... Source #
HasTotalTypeP typ (S1 _ (K1 _ typ)) = Just typ | |
HasTotalTypeP typ (l :*: r) = Alt (HasTotalTypeP typ l) (HasTotalTypeP typ r) | |
HasTotalTypeP typ (l :+: r) = Both (HasTotalTypeP typ l) (HasTotalTypeP typ r) | |
HasTotalTypeP typ (S1 _ _) = Nothing | |
HasTotalTypeP typ (C1 _ f) = HasTotalTypeP typ f | |
HasTotalTypeP typ (D1 _ f) = HasTotalTypeP typ f | |
HasTotalTypeP typ (K1 _ _) = Nothing | |
HasTotalTypeP typ U1 = Nothing | |
HasTotalTypeP typ V1 = Nothing |
type family HasTotalPositionP (pos :: Nat) f :: Maybe Type where ... Source #
HasTotalPositionP pos (S1 _ (K1 (Pos pos) t)) = Just t | |
HasTotalPositionP pos (l :*: r) = Alt (HasTotalPositionP pos l) (HasTotalPositionP pos r) | |
HasTotalPositionP pos (l :+: r) = Both (HasTotalPositionP pos l) (HasTotalPositionP pos r) | |
HasTotalPositionP pos (S1 _ _) = Nothing | |
HasTotalPositionP pos (C1 _ f) = HasTotalPositionP pos f | |
HasTotalPositionP pos (D1 _ f) = HasTotalPositionP pos f | |
HasTotalPositionP pos (K1 _ _) = Nothing | |
HasTotalPositionP pos U1 = Nothing | |
HasTotalPositionP pos V1 = Nothing |
type family HasPartialTypeP a f :: Bool where ... Source #
HasPartialTypeP t (l :+: r) = HasPartialTypeP t l || HasPartialTypeP t r | |
HasPartialTypeP t (C1 m f) = t == GTypes f | |
HasPartialTypeP t (M1 _ _ f) = HasPartialTypeP t f | |
HasPartialTypeP t _ = False |
Instances
Subtype a Void Source # | See Note [Uncluttering type signatures] |
Subtype Void a Source # | See Note [Uncluttering type signatures] |
HasType a Void Source # | See Note [Uncluttering type signatures] |
AsSubtype a Void Source # | See Note [Uncluttering type signatures] |
AsSubtype Void a Source # | See Note [Uncluttering type signatures] |
AsType a Void Source # | See Note [Uncluttering type signatures] |
Defined in Data.Generics.Sum.Typed | |
AsType Void a Source # | See Note [Uncluttering type signatures] |
Defined in Data.Generics.Sum.Typed |
Instances
HasField_ f (Void1 a) (Void1 b) a b Source # | |
HasField f (Void1 a) (Void1 b) a b Source # | See Note [Uncluttering type signatures] |
HasParam p (Void1 a) (Void1 b) a b Source # | |
Defined in Data.Generics.Product.Param | |
HasPosition_ f (Void1 a) (Void1 b) a b Source # | |
HasPosition f (Void1 a) (Void1 b) a b Source # | See Note [Uncluttering type signatures] |
AsConstructor_ ctor (Void1 a) (Void1 b) a b Source # | |
AsConstructor ctor (Void1 a) (Void1 b) a b Source # | See Note [Uncluttering type signatures] |
type family NoGeneric (a :: Type) (ctxt :: [ErrorMessage]) :: Constraint where ... Source #
type family Defined_list (break :: [*]) (err :: Constraint) (a :: k) :: k where ... Source #
Defined_list '[Void] _ _ = Any | |
Defined_list _ _ k = k |
type family QuoteType (typ :: k) :: ErrorMessage where ... Source #
type family PrettyError (ctxt :: [ErrorMessage]) :: k where ... Source #
PrettyError '[] = TypeError (Text "") | |
PrettyError (c ': cs) = TypeError ((Text "| " :<>: c) :$$: PrettyLines cs) |
class GAsConstructor (ctor :: Symbol) s t a b | ctor s -> a, ctor t -> b where Source #
As AsConstructor
but over generic representations as defined by
GHC.Generics.
Instances
GSumAsConstructor ctor (HasCtorP ctor l) l r l' r' a b => GAsConstructor ctor (l :+: r) (l' :+: r') a b Source # | |
GAsConstructor ctor f f' a b => GAsConstructor ctor (M1 D meta f) (M1 D meta f') a b Source # | |
(GIsList f f as as, GIsList g g bs bs, ListTuple a as, ListTuple b bs) => GAsConstructor ctor (M1 C (MetaCons ctor fixity fields) f) (M1 C (MetaCons ctor fixity fields) g) a b Source # | |
type GAsConstructor' ctor s a = GAsConstructor ctor s s a a Source #
class GAsType (f :: Type -> Type) (as :: [Type]) where Source #
As AsType
but over generic representations as defined by GHC.Generics.
class GAsSubtype (subf :: Type -> Type) (supf :: Type -> Type) where Source #
As AsSubtype
but over generic representations as defined by
GHC.Generics.
Instances
(GSplash sub sup, GDowncast sub sup) => GAsSubtype sub sup Source # | |
Defined in Data.Generics.Sum.Internal.Subtype |
type family CRep (a :: Type) :: G where ... Source #
In-order labeling of the generic tree with the field positions
We replace the (K1 R a) nodes with (K1 (Pos n) a), where n
is the position
of the field in question in the data type. This is convenient, because we
can reuse all the existing functions as long as they are polymorphic in the
first parameter of K1
.
class GLens (pred :: Pred) (s :: Type -> Type) (t :: Type -> Type) a b | s pred -> a, t pred -> b where Source #
Instances
GLens pred (K1 r a :: Type -> Type) (K1 r b :: Type -> Type) a b Source # | |
(GLens pred l l' a b, GLens pred r r' a b) => GLens pred (l :+: r) (l' :+: r') a b Source # | |
GProductLens (Eval pred l) pred l r l' r' a b => GLens pred (l :*: r) (l' :*: r') a b Source # | |
GLens pred f g a b => GLens pred (M1 m meta f) (M1 m meta g) a b Source # | |
class GUpcast (sub :: Type -> Type) (sup :: Type -> Type) where Source #
Instances
GUpcast sub sup => GUpcast sub (D1 c sup) Source # | |
Defined in Data.Generics.Product.Internal.Subtype | |
GUpcast sub sup => GUpcast sub (C1 c sup) Source # | |
Defined in Data.Generics.Product.Internal.Subtype | |
GLens' (HasTotalFieldPSym field) sub t => GUpcast sub (S1 (MetaSel (Just field) p f b) (Rec0 t)) Source # | |
(GUpcast sub a, GUpcast sub b) => GUpcast sub (a :*: b) Source # | |
Defined in Data.Generics.Product.Internal.Subtype |
class GSmash sub sup where Source #
Instances
GSmash sub sup => GSmash (D1 c sub :: k -> Type) (sup :: k -> Type) Source # | |
GSmash sub sup => GSmash (C1 c sub :: k -> Type) (sup :: k -> Type) Source # | |
(GSmash a sup, GSmash b sup) => GSmash (a :*: b :: k -> Type) (sup :: k -> Type) Source # | |
(leaf ~ S1 (MetaSel (Just field) p f b) t, GSmashLeaf leaf sup (HasTotalFieldP field sup)) => GSmash (S1 (MetaSel (Just field) p f b) t :: k -> Type) (sup :: k -> Type) Source # | |
class GHasConstraints (c :: * -> * -> Constraint) s t where Source #
gconstraints :: TraversalC c (s x) (t x) Source #
Instances
class GHasConstraints' (c :: * -> Constraint) (f :: * -> *) where Source #
Constrained traversal.
gconstraints' :: forall g x. Applicative g => (forall a. c a => a -> g a) -> f x -> g (f x) Source #
Instances
class GIsList (f :: Type -> Type) (g :: Type -> Type) (as :: [Type]) (bs :: [Type]) | f -> as, g -> bs, bs f -> g, as g -> f where Source #
Instances
GIsList (U1 :: Type -> Type) (U1 :: Type -> Type) ([] :: [Type]) ([] :: [Type]) Source # | |
GIsList (Rec0 a) (Rec0 b) (a ': ([] :: [Type])) (b ': ([] :: [Type])) Source # | |
(GIsList l l' as as', GIsList r r' bs bs', Appending as bs cs as' bs' cs', cs ~ (as ++ bs), cs' ~ (as' ++ bs')) => GIsList (l :*: r) (l' :*: r') cs cs' Source # | |
GIsList f g as bs => GIsList (M1 t meta f) (M1 t meta g) as bs Source # | |
class IndexList (i :: Nat) as bs a b | i as -> a, i bs -> b, i as b -> bs, i bs a -> as where Source #
class ListTuple (tuple :: Type) (as :: [Type]) | as -> tuple where Source #
type ListToTuple as :: Type Source #
tupled :: Iso' (HList as) tuple Source #
tupleToList :: tuple -> HList as Source #
listToTuple :: HList as -> tuple Source #
Instances
ListTuple () ([] :: [Type]) Source # | |
Defined in Data.Generics.Product.Internal.HList type ListToTuple [] :: Type Source # | |
ListTuple a (a ': ([] :: [Type])) Source # | |
Defined in Data.Generics.Product.Internal.HList type ListToTuple (a ': []) :: Type Source # | |
ListTuple (a, b) (a ': (b ': ([] :: [Type]))) Source # | |
Defined in Data.Generics.Product.Internal.HList type ListToTuple (a ': (b ': [])) :: Type Source # | |
ListTuple (a, b, c) (a ': (b ': (c ': ([] :: [Type])))) Source # | |
Defined in Data.Generics.Product.Internal.HList type ListToTuple (a ': (b ': (c ': []))) :: Type Source # | |
ListTuple (a, b, c, d) (a ': (b ': (c ': (d ': ([] :: [Type]))))) Source # | |
Defined in Data.Generics.Product.Internal.HList type ListToTuple (a ': (b ': (c ': (d ': [])))) :: Type Source # | |
ListTuple (a, b, c, d, e) (a ': (b ': (c ': (d ': (e ': ([] :: [Type])))))) Source # | |
Defined in Data.Generics.Product.Internal.HList type ListToTuple (a ': (b ': (c ': (d ': (e ': []))))) :: Type Source # | |
ListTuple (a, b, c, d, e, f) (a ': (b ': (c ': (d ': (e ': (f ': ([] :: [Type]))))))) Source # | |
Defined in Data.Generics.Product.Internal.HList type ListToTuple (a ': (b ': (c ': (d ': (e ': (f ': [])))))) :: Type Source # | |
ListTuple (a, b, c, d, e, f, g) (a ': (b ': (c ': (d ': (e ': (f ': (g ': ([] :: [Type])))))))) Source # | |
Defined in Data.Generics.Product.Internal.HList type ListToTuple (a ': (b ': (c ': (d ': (e ': (f ': (g ': []))))))) :: Type Source # tupled :: Iso' (HList (a ': (b ': (c ': (d ': (e ': (f ': (g ': [])))))))) (a, b, c, d, e, f, g) Source # tupleToList :: (a, b, c, d, e, f, g) -> HList (a ': (b ': (c ': (d ': (e ': (f ': (g ': []))))))) Source # listToTuple :: HList (a ': (b ': (c ': (d ': (e ': (f ': (g ': []))))))) -> (a, b, c, d, e, f, g) Source # | |
ListTuple (a, b, c, d, e, f, g, h) (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': ([] :: [Type]))))))))) Source # | |
Defined in Data.Generics.Product.Internal.HList type ListToTuple (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': [])))))))) :: Type Source # tupled :: Iso' (HList (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': []))))))))) (a, b, c, d, e, f, g, h) Source # tupleToList :: (a, b, c, d, e, f, g, h) -> HList (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': [])))))))) Source # listToTuple :: HList (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': [])))))))) -> (a, b, c, d, e, f, g, h) Source # | |
ListTuple (a, b, c, d, e, f, g, h, j) (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': ([] :: [Type])))))))))) Source # | |
Defined in Data.Generics.Product.Internal.HList type ListToTuple (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': []))))))))) :: Type Source # tupled :: Iso' (HList (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': [])))))))))) (a, b, c, d, e, f, g, h, j) Source # tupleToList :: (a, b, c, d, e, f, g, h, j) -> HList (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': []))))))))) Source # listToTuple :: HList (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': []))))))))) -> (a, b, c, d, e, f, g, h, j) Source # | |
ListTuple (a, b, c, d, e, f, g, h, j, k) (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': ([] :: [Type]))))))))))) Source # | |
Defined in Data.Generics.Product.Internal.HList type ListToTuple (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': [])))))))))) :: Type Source # tupled :: Iso' (HList (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': []))))))))))) (a, b, c, d, e, f, g, h, j, k) Source # tupleToList :: (a, b, c, d, e, f, g, h, j, k) -> HList (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': [])))))))))) Source # listToTuple :: HList (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': [])))))))))) -> (a, b, c, d, e, f, g, h, j, k) Source # | |
ListTuple (a, b, c, d, e, f, g, h, j, k, l) (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': ([] :: [Type])))))))))))) Source # | |
Defined in Data.Generics.Product.Internal.HList type ListToTuple (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': []))))))))))) :: Type Source # tupled :: Iso' (HList (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': [])))))))))))) (a, b, c, d, e, f, g, h, j, k, l) Source # tupleToList :: (a, b, c, d, e, f, g, h, j, k, l) -> HList (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': []))))))))))) Source # listToTuple :: HList (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': []))))))))))) -> (a, b, c, d, e, f, g, h, j, k, l) Source # | |
ListTuple (a, b, c, d, e, f, g, h, j, k, l, m) (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': (m ': ([] :: [Type]))))))))))))) Source # | |
Defined in Data.Generics.Product.Internal.HList type ListToTuple (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': (m ': [])))))))))))) :: Type Source # tupled :: Iso' (HList (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': (m ': []))))))))))))) (a, b, c, d, e, f, g, h, j, k, l, m) Source # tupleToList :: (a, b, c, d, e, f, g, h, j, k, l, m) -> HList (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': (m ': [])))))))))))) Source # listToTuple :: HList (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': (m ': [])))))))))))) -> (a, b, c, d, e, f, g, h, j, k, l, m) Source # | |
ListTuple (a, b, c, d, e, f, g, h, j, k, l, m, n) (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': (m ': (n ': ([] :: [Type])))))))))))))) Source # | |
Defined in Data.Generics.Product.Internal.HList type ListToTuple (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': (m ': (n ': []))))))))))))) :: Type Source # tupled :: Iso' (HList (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': (m ': (n ': [])))))))))))))) (a, b, c, d, e, f, g, h, j, k, l, m, n) Source # tupleToList :: (a, b, c, d, e, f, g, h, j, k, l, m, n) -> HList (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': (m ': (n ': []))))))))))))) Source # listToTuple :: HList (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': (m ': (n ': []))))))))))))) -> (a, b, c, d, e, f, g, h, j, k, l, m, n) Source # | |
ListTuple (a, b, c, d, e, f, g, h, j, k, l, m, n, o) (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': (m ': (n ': (o ': ([] :: [Type]))))))))))))))) Source # | |
Defined in Data.Generics.Product.Internal.HList type ListToTuple (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': (m ': (n ': (o ': [])))))))))))))) :: Type Source # tupled :: Iso' (HList (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': (m ': (n ': (o ': []))))))))))))))) (a, b, c, d, e, f, g, h, j, k, l, m, n, o) Source # tupleToList :: (a, b, c, d, e, f, g, h, j, k, l, m, n, o) -> HList (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': (m ': (n ': (o ': [])))))))))))))) Source # listToTuple :: HList (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': (m ': (n ': (o ': [])))))))))))))) -> (a, b, c, d, e, f, g, h, j, k, l, m, n, o) Source # | |
ListTuple (a, b, c, d, e, f, g, h, j, k, l, m, n, o, p) (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': (m ': (n ': (o ': (p ': ([] :: [Type])))))))))))))))) Source # | |
Defined in Data.Generics.Product.Internal.HList type ListToTuple (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': (m ': (n ': (o ': (p ': []))))))))))))))) :: Type Source # tupled :: Iso' (HList (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': (m ': (n ': (o ': (p ': [])))))))))))))))) (a, b, c, d, e, f, g, h, j, k, l, m, n, o, p) Source # tupleToList :: (a, b, c, d, e, f, g, h, j, k, l, m, n, o, p) -> HList (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': (m ': (n ': (o ': (p ': []))))))))))))))) Source # listToTuple :: HList (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': (m ': (n ': (o ': (p ': []))))))))))))))) -> (a, b, c, d, e, f, g, h, j, k, l, m, n, o, p) Source # | |
ListTuple (a, b, c, d, e, f, g, h, j, k, l, m, n, o, p, q) (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': (m ': (n ': (o ': (p ': (q ': ([] :: [Type]))))))))))))))))) Source # | |
Defined in Data.Generics.Product.Internal.HList type ListToTuple (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': (m ': (n ': (o ': (p ': (q ': [])))))))))))))))) :: Type Source # tupled :: Iso' (HList (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': (m ': (n ': (o ': (p ': (q ': []))))))))))))))))) (a, b, c, d, e, f, g, h, j, k, l, m, n, o, p, q) Source # tupleToList :: (a, b, c, d, e, f, g, h, j, k, l, m, n, o, p, q) -> HList (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': (m ': (n ': (o ': (p ': (q ': [])))))))))))))))) Source # listToTuple :: HList (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': (m ': (n ': (o ': (p ': (q ': [])))))))))))))))) -> (a, b, c, d, e, f, g, h, j, k, l, m, n, o, p, q) Source # | |
ListTuple (a, b, c, d, e, f, g, h, j, k, l, m, n, o, p, q, r) (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': (m ': (n ': (o ': (p ': (q ': (r ': ([] :: [Type])))))))))))))))))) Source # | |
Defined in Data.Generics.Product.Internal.HList type ListToTuple (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': (m ': (n ': (o ': (p ': (q ': (r ': []))))))))))))))))) :: Type Source # tupled :: Iso' (HList (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': (m ': (n ': (o ': (p ': (q ': (r ': [])))))))))))))))))) (a, b, c, d, e, f, g, h, j, k, l, m, n, o, p, q, r) Source # tupleToList :: (a, b, c, d, e, f, g, h, j, k, l, m, n, o, p, q, r) -> HList (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': (m ': (n ': (o ': (p ': (q ': (r ': []))))))))))))))))) Source # listToTuple :: HList (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': (m ': (n ': (o ': (p ': (q ': (r ': []))))))))))))))))) -> (a, b, c, d, e, f, g, h, j, k, l, m, n, o, p, q, r) Source # | |
ListTuple (a, b, c, d, e, f, g, h, j, k, l, m, n, o, p, q, r, s) (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': (m ': (n ': (o ': (p ': (q ': (r ': (s ': ([] :: [Type]))))))))))))))))))) Source # | |
Defined in Data.Generics.Product.Internal.HList type ListToTuple (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': (m ': (n ': (o ': (p ': (q ': (r ': (s ': [])))))))))))))))))) :: Type Source # tupled :: Iso' (HList (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': (m ': (n ': (o ': (p ': (q ': (r ': (s ': []))))))))))))))))))) (a, b, c, d, e, f, g, h, j, k, l, m, n, o, p, q, r, s) Source # tupleToList :: (a, b, c, d, e, f, g, h, j, k, l, m, n, o, p, q, r, s) -> HList (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': (m ': (n ': (o ': (p ': (q ': (r ': (s ': [])))))))))))))))))) Source # listToTuple :: HList (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': (m ': (n ': (o ': (p ': (q ': (r ': (s ': [])))))))))))))))))) -> (a, b, c, d, e, f, g, h, j, k, l, m, n, o, p, q, r, s) Source # |
type family TupleToList a where ... Source #
TupleToList () = '[] | |
TupleToList (a, b) = '[a, b] | |
TupleToList (a, b, c) = '[a, b, c] | |
TupleToList (a, b, c, d) = '[a, b, c, d] | |
TupleToList (a, b, c, d, e) = '[a, b, c, d, e] | |
TupleToList (a, b, c, d, e, f) = '[a, b, c, d, e, f] | |
TupleToList (a, b, c, d, e, f, g) = '[a, b, c, d, e, f, g] | |
TupleToList (a, b, c, d, e, f, g, h) = '[a, b, c, d, e, f, g, h] | |
TupleToList (a, b, c, d, e, f, g, h, j) = '[a, b, c, d, e, f, g, h, j] | |
TupleToList (a, b, c, d, e, f, g, h, j, k) = '[a, b, c, d, e, f, g, h, j, k] | |
TupleToList (a, b, c, d, e, f, g, h, j, k, l) = '[a, b, c, d, e, f, g, h, j, k, l] | |
TupleToList (a, b, c, d, e, f, g, h, j, k, l, m) = '[a, b, c, d, e, f, g, h, j, k, l, m] | |
TupleToList (a, b, c, d, e, f, g, h, j, k, l, m, n) = '[a, b, c, d, e, f, g, h, j, k, l, m, n] | |
TupleToList (a, b, c, d, e, f, g, h, j, k, l, m, n, o) = '[a, b, c, d, e, f, g, h, j, k, l, m, n, o] | |
TupleToList (a, b, c, d, e, f, g, h, j, k, l, m, n, o, p) = '[a, b, c, d, e, f, g, h, j, k, l, m, n, o, p] | |
TupleToList (a, b, c, d, e, f, g, h, j, k, l, m, n, o, p, q) = '[a, b, c, d, e, f, g, h, j, k, l, m, n, o, p, q] | |
TupleToList (a, b, c, d, e, f, g, h, j, k, l, m, n, o, p, q, r) = '[a, b, c, d, e, f, g, h, j, k, l, m, n, o, p, q, r] | |
TupleToList (a, b, c, d, e, f, g, h, j, k, l, m, n, o, p, q, r, s) = '[a, b, c, d, e, f, g, h, j, k, l, m, n, o, p, q, r, s] | |
TupleToList a = '[a] |
van Laarhoven optics
data Exchange a b s t Source #
Exchange (s -> a) (b -> t) |
Instances
Profunctor (Exchange a b) Source # | |
Defined in Data.Generics.Internal.VL.Iso dimap :: (a0 -> b0) -> (c -> d) -> Exchange a b b0 c -> Exchange a b a0 d # lmap :: (a0 -> b0) -> Exchange a b b0 c -> Exchange a b a0 c # rmap :: (b0 -> c) -> Exchange a b a0 b0 -> Exchange a b a0 c # (#.) :: Coercible c b0 => q b0 c -> Exchange a b a0 b0 -> Exchange a b a0 c # (.#) :: Coercible b0 a0 => Exchange a b b0 c -> q a0 b0 -> Exchange a b a0 c # | |
Functor (Exchange a b s) Source # | |
type Iso' s a = forall p f. (Profunctor p, Functor f) => p a (f a) -> p s (f s) Source #
type Iso s t a b = forall p f. (Profunctor p, Functor f) => p a (f b) -> p s (f t) Source #
withIso :: Iso s t a b -> ((s -> a) -> (b -> t) -> r) -> r Source #
Extract the two functions, one from s -> a
and
one from b -> t
that characterize an Iso
.
repIso :: (Generic a, Generic b) => Iso a b (Rep a x) (Rep b x) Source #
A type and its generic representation are isomorphic
lens2lensvl :: ALens a b s t -> Lens s t a b Source #
type Prism s t a b = forall p f. (Choice p, Applicative f) => p a (f b) -> p s (f t) Source #
Type alias for prism
prismRavel :: (Market a b a b -> Market a b s t) -> Prism s t a b Source #
prism2prismvl :: Market a b s t -> Prism s t a b Source #
type Traversal' s a = forall f. Applicative f => (a -> f a) -> s -> f s Source #
Type alias for traversal
type TraversalC (c :: * -> * -> Constraint) s t = forall f. Applicative f => (forall a b. c a b => a -> f b) -> s -> f t Source #
type TraversalC' (c :: * -> Constraint) s = forall f. Applicative f => (forall a. c a => a -> f a) -> s -> f s Source #
type Traversal s t a b = forall f. Applicative f => (a -> f b) -> s -> f t Source #
confusing :: Applicative f => Traversal s t a b -> (a -> f b) -> s -> f t Source #
confusingC :: forall c f s. Applicative f => TraversalC' c s -> LensLikeC c f s Source #
liftCurriedYoneda :: Applicative f => f a -> Curried (Yoneda f) a Source #
Curried | |
|
liftCurried :: Applicative f => f a -> Curried f a Source #
lowerCurried :: Applicative f => Curried f a -> f a Source #
Instances
Functor (Yoneda f) Source # | |
Applicative f => Applicative (Yoneda f) Source # | |
liftYoneda :: Functor f => f a -> Yoneda f a Source #
lowerYoneda :: Yoneda f a -> f a Source #