generic-lens-1.2.0.0: Generically derive traversals, lenses and prisms.

Copyright(C) 2019 Csongor Kiss
LicenseBSD3
MaintainerCsongor Kiss <kiss.csongor.kiss@gmail.com>
Stabilityexperimental
Portabilitynon-portable
Safe HaskellNone
LanguageHaskell2010

Data.GenericLens.Internal

Contents

Description

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

Documentation

type Indexed t = Indexed' t 0 Source #

type family Infer (s :: *) (a' :: *) (b :: *) :: * where ... Source #

Equations

Infer (s a) a' b = ReplaceArgs (s a) (Unify a' b) 
Infer s _ _ = s 

data PTag Source #

Constructors

PTag 

type family P :: Nat -> k -> PTag -> k Source #

type family LookupParam (a :: k) (p :: Nat) :: Maybe Nat where ... Source #

Equations

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 

type family ArgAt (t :: k) (n :: Nat) :: j where ... Source #

Equations

ArgAt (t a) 0 = a 
ArgAt (t a) n = ArgAt t (n - 1) 

type family ArgCount (t :: k) :: Nat where ... Source #

Equations

ArgCount (f a) = 1 + ArgCount f 
ArgCount a = 0 

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 # 
Instance details

Defined in Data.Generics.Internal.Families.Changing

(gb ~ g b, UnifyHead f g) => UnifyHead (f a :: k2) (gb :: k2) Source # 
Instance details

Defined in Data.Generics.Internal.Families.Changing

type family HasTotalFieldP (field :: Symbol) f :: Maybe Type where ... Source #

Equations

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 #

Equations

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 #

Equations

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 

data Pos (p :: Nat) Source #

type family HasPartialTypeP a f :: Bool where ... Source #

type family HasCtorP (ctor :: Symbol) f :: Bool where ... Source #

Equations

HasCtorP ctor (C1 (MetaCons ctor _ _) _) = True 
HasCtorP ctor (f :+: g) = HasCtorP ctor f || HasCtorP ctor g 
HasCtorP ctor (D1 m f) = HasCtorP ctor f 
HasCtorP ctor _ = False 

type family GTypes (rep :: Type -> Type) :: [Type] where ... Source #

Equations

GTypes (l :*: r) = GTypes l ++ GTypes r 
GTypes (K1 _ a) = '[a] 
GTypes (M1 _ m a) = GTypes a 
GTypes U1 = '[] 

type family CollectTotalType t f :: TypeStat where ... Source #

Equations

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 #

Equations

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 #

Equations

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 #

type family (xs :: [Symbol]) \\ (ys :: [Symbol]) :: [Symbol] where ... infixr 5 Source #

Equations

xs \\ '[] = xs 
'[] \\ xs = '[] 
(x ': xs) \\ (y ': ys) = Sub' (CmpSymbol x y) x y xs ys 

type family ShowSymbols (ctors :: [Symbol]) :: ErrorMessage where ... Source #

Equations

ShowSymbols '[] = Text "" 
ShowSymbols (c ': cs) = (Text "\8226 " :<>: Text c) :$$: ShowSymbols cs 

type Indexed t = Indexed' t 0 Source #

type family Infer (s :: *) (a' :: *) (b :: *) :: * where ... Source #

Equations

Infer (s a) a' b = ReplaceArgs (s a) (Unify a' b) 
Infer s _ _ = s 

data PTag Source #

Constructors

PTag 

type family P :: Nat -> k -> PTag -> k Source #

type family LookupParam (a :: k) (p :: Nat) :: Maybe Nat where ... Source #

Equations

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 

type family ArgAt (t :: k) (n :: Nat) :: j where ... Source #

Equations

ArgAt (t a) 0 = a 
ArgAt (t a) n = ArgAt t (n - 1) 

type family ArgCount (t :: k) :: Nat where ... Source #

Equations

ArgCount (f a) = 1 + ArgCount f 
ArgCount a = 0 

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 # 
Instance details

Defined in Data.Generics.Internal.Families.Changing

(gb ~ g b, UnifyHead f g) => UnifyHead (f a :: k2) (gb :: k2) Source # 
Instance details

Defined in Data.Generics.Internal.Families.Changing

type family CollectTotalType t f :: TypeStat where ... Source #

Equations

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 #

Equations

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 #

Equations

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 #

type family (xs :: [Symbol]) \\ (ys :: [Symbol]) :: [Symbol] where ... infixr 5 Source #

Equations

xs \\ '[] = xs 
'[] \\ xs = '[] 
(x ': xs) \\ (y ': ys) = Sub' (CmpSymbol x y) x y xs ys 

type family HasTotalFieldP (field :: Symbol) f :: Maybe Type where ... Source #

Equations

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 #

Equations

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 #

Equations

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 

data Pos (p :: Nat) Source #

type family HasPartialTypeP a f :: Bool where ... Source #

type family HasCtorP (ctor :: Symbol) f :: Bool where ... Source #

Equations

HasCtorP ctor (C1 (MetaCons ctor _ _) _) = True 
HasCtorP ctor (f :+: g) = HasCtorP ctor f || HasCtorP ctor g 
HasCtorP ctor (D1 m f) = HasCtorP ctor f 
HasCtorP ctor _ = False 

type family GTypes (rep :: Type -> Type) :: [Type] where ... Source #

Equations

GTypes (l :*: r) = GTypes l ++ GTypes r 
GTypes (K1 _ a) = '[a] 
GTypes (M1 _ m a) = GTypes a 
GTypes U1 = '[] 

data Void Source #

Instances
Subtype a Void Source #

See Note [Uncluttering type signatures]

Instance details

Defined in Data.Generics.Product.Subtype

Methods

super :: Lens Void Void a a Source #

upcast :: Void -> a Source #

smash :: a -> Void -> Void Source #

Subtype Void a Source #

See Note [Uncluttering type signatures]

Instance details

Defined in Data.Generics.Product.Subtype

Methods

super :: Lens a a Void Void Source #

upcast :: a -> Void Source #

smash :: Void -> a -> a Source #

HasType a Void Source #

See Note [Uncluttering type signatures]

Instance details

Defined in Data.Generics.Product.Typed

Methods

typed :: Lens Void Void a a Source #

getTyped :: Void -> a Source #

setTyped :: a -> Void -> Void Source #

AsSubtype a Void Source #

See Note [Uncluttering type signatures]

Instance details

Defined in Data.Generics.Sum.Subtype

AsSubtype Void a Source #

See Note [Uncluttering type signatures]

Instance details

Defined in Data.Generics.Sum.Subtype

AsType a Void Source #

See Note [Uncluttering type signatures]

Instance details

Defined in Data.Generics.Sum.Typed

AsType Void a Source #

See Note [Uncluttering type signatures]

Instance details

Defined in Data.Generics.Sum.Typed

data Void1 a Source #

Instances
HasField_ f (Void1 a) (Void1 b) a b Source # 
Instance details

Defined in Data.Generics.Product.Fields

Methods

field_ :: Lens (Void1 a) (Void1 b) a b Source #

HasField f (Void1 a) (Void1 b) a b Source #

See Note [Uncluttering type signatures]

Instance details

Defined in Data.Generics.Product.Fields

Methods

field :: Lens (Void1 a) (Void1 b) a b Source #

HasParam p (Void1 a) (Void1 b) a b Source # 
Instance details

Defined in Data.Generics.Product.Param

Methods

param :: Applicative g => (a -> g b) -> Void1 a -> g (Void1 b) Source #

HasPosition_ f (Void1 a) (Void1 b) a b Source # 
Instance details

Defined in Data.Generics.Product.Positions

Methods

position_ :: Lens (Void1 a) (Void1 b) a b Source #

HasPosition f (Void1 a) (Void1 b) a b Source #

See Note [Uncluttering type signatures]

Instance details

Defined in Data.Generics.Product.Positions

Methods

position :: Lens (Void1 a) (Void1 b) a b Source #

AsConstructor_ ctor (Void1 a) (Void1 b) a b Source # 
Instance details

Defined in Data.Generics.Sum.Constructors

Methods

_Ctor_ :: Prism (Void1 a) (Void1 b) a b Source #

AsConstructor ctor (Void1 a) (Void1 b) a b Source #

See Note [Uncluttering type signatures]

Instance details

Defined in Data.Generics.Sum.Constructors

Methods

_Ctor :: Prism (Void1 a) (Void1 b) a b Source #

data Void2 a b Source #

type family NoGeneric (a :: Type) (ctxt :: [ErrorMessage]) :: Constraint where ... Source #

Equations

NoGeneric a ctxt = PrettyError ((Text "No instance for " :<>: QuoteType (Generic a)) ': ctxt) 

type family Defined (break :: Type -> Type) (err :: Constraint) (a :: k) :: k where ... Source #

Equations

Defined Void1 _ _ = Any 
Defined _ _ k = k 

type family Defined_list (break :: [*]) (err :: Constraint) (a :: k) :: k where ... Source #

Equations

Defined_list '[Void] _ _ = Any 
Defined_list _ _ k = k 

type family QuoteType (typ :: k) :: ErrorMessage where ... Source #

Equations

QuoteType typ = (Text "\8216" :<>: ShowType typ) :<>: Text "\8217" 

type family PrettyError (ctxt :: [ErrorMessage]) :: k where ... Source #

Equations

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.

Methods

_GCtor :: Prism (s x) (t x) a b Source #

Instances
GSumAsConstructor ctor (HasCtorP ctor l) l r l' r' a b => GAsConstructor ctor (l :+: r) (l' :+: r') a b Source # 
Instance details

Defined in Data.Generics.Sum.Internal.Constructors

Methods

_GCtor :: Prism ((l :+: r) x) ((l' :+: r') x) a b Source #

GAsConstructor ctor f f' a b => GAsConstructor ctor (M1 D meta f) (M1 D meta f') a b Source # 
Instance details

Defined in Data.Generics.Sum.Internal.Constructors

Methods

_GCtor :: Prism (M1 D meta f x) (M1 D meta f' x) 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 # 
Instance details

Defined in Data.Generics.Sum.Internal.Constructors

Methods

_GCtor :: Prism (M1 C (MetaCons ctor fixity fields) f x) (M1 C (MetaCons ctor fixity fields) g x) 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.

Methods

_GTyped :: Prism (f x) (f x) (HList as) (HList as) Source #

Instances
GSumAsType (HasPartialTypeP a l) l r a => GAsType (l :+: r) a Source # 
Instance details

Defined in Data.Generics.Sum.Internal.Typed

Methods

_GTyped :: Prism ((l :+: r) x) ((l :+: r) x) (HList a) (HList a) Source #

GAsType f a => GAsType (M1 D meta f) a Source # 
Instance details

Defined in Data.Generics.Sum.Internal.Typed

Methods

_GTyped :: Prism (M1 D meta f x) (M1 D meta f x) (HList a) (HList a) Source #

GIsList f f as as => GAsType (M1 C meta f) as Source # 
Instance details

Defined in Data.Generics.Sum.Internal.Typed

Methods

_GTyped :: Prism (M1 C meta f x) (M1 C meta f x) (HList as) (HList as) Source #

class GAsSubtype (subf :: Type -> Type) (supf :: Type -> Type) where Source #

As AsSubtype but over generic representations as defined by GHC.Generics.

Methods

_GSub :: Prism' (supf x) (subf x) Source #

Instances
(GSplash sub sup, GDowncast sub sup) => GAsSubtype sub sup Source # 
Instance details

Defined in Data.Generics.Sum.Internal.Subtype

Methods

_GSub :: Prism' (sup x) (sub x) Source #

type (<?) x y = Not (y <=? x) infixl 4 Source #

type family Size f :: Nat where ... Source #

Equations

Size (l :*: r) = Size l + Size r 
Size (l :+: r) = Min (Size l) (Size r) 
Size (D1 meta f) = Size f 
Size (C1 meta f) = Size f 
Size f = 1 

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.

Equations

CRep rep = Fst (Traverse (Rep rep) 1) 

class GLens (pred :: Pred) (s :: Type -> Type) (t :: Type -> Type) a b | s pred -> a, t pred -> b where Source #

Methods

glens :: Lens (s x) (t x) a b Source #

Instances
GLens pred (K1 r a :: Type -> Type) (K1 r b :: Type -> Type) a b Source # 
Instance details

Defined in Data.Generics.Product.Internal.GLens

Methods

glens :: Lens (K1 r a x) (K1 r b x) a b Source #

(GLens pred l l' a b, GLens pred r r' a b) => GLens pred (l :+: r) (l' :+: r') a b Source # 
Instance details

Defined in Data.Generics.Product.Internal.GLens

Methods

glens :: Lens ((l :+: r) x) ((l' :+: r') x) a b Source #

GProductLens (Eval pred l) pred l r l' r' a b => GLens pred (l :*: r) (l' :*: r') a b Source # 
Instance details

Defined in Data.Generics.Product.Internal.GLens

Methods

glens :: Lens ((l :*: r) x) ((l' :*: r') x) a b Source #

GLens pred f g a b => GLens pred (M1 m meta f) (M1 m meta g) a b Source # 
Instance details

Defined in Data.Generics.Product.Internal.GLens

Methods

glens :: Lens (M1 m meta f x) (M1 m meta g x) a b Source #

type GLens' pred s a = GLens pred s s a a Source #

type TyFun a b = a -> b -> Type Source #

type family Eval (f :: TyFun a b) (x :: a) :: b Source #

class GUpcast (sub :: Type -> Type) (sup :: Type -> Type) where Source #

Methods

gupcast :: sub p -> sup p Source #

Instances
GUpcast sub sup => GUpcast sub (D1 c sup) Source # 
Instance details

Defined in Data.Generics.Product.Internal.Subtype

Methods

gupcast :: sub p -> D1 c sup p Source #

GUpcast sub sup => GUpcast sub (C1 c sup) Source # 
Instance details

Defined in Data.Generics.Product.Internal.Subtype

Methods

gupcast :: sub p -> C1 c sup p Source #

GLens' (HasTotalFieldPSym field) sub t => GUpcast sub (S1 (MetaSel (Just field) p f b) (Rec0 t)) Source # 
Instance details

Defined in Data.Generics.Product.Internal.Subtype

Methods

gupcast :: sub p0 -> S1 (MetaSel (Just field) p f b) (Rec0 t) p0 Source #

(GUpcast sub a, GUpcast sub b) => GUpcast sub (a :*: b) Source # 
Instance details

Defined in Data.Generics.Product.Internal.Subtype

Methods

gupcast :: sub p -> (a :*: b) p Source #

class GSmash sub sup where Source #

Methods

gsmash :: sup p -> sub p -> sub p Source #

Instances
GSmash sub sup => GSmash (D1 c sub :: k -> Type) (sup :: k -> Type) Source # 
Instance details

Defined in Data.Generics.Product.Internal.Subtype

Methods

gsmash :: sup p -> D1 c sub p -> D1 c sub p Source #

GSmash sub sup => GSmash (C1 c sub :: k -> Type) (sup :: k -> Type) Source # 
Instance details

Defined in Data.Generics.Product.Internal.Subtype

Methods

gsmash :: sup p -> C1 c sub p -> C1 c sub p Source #

(GSmash a sup, GSmash b sup) => GSmash (a :*: b :: k -> Type) (sup :: k -> Type) Source # 
Instance details

Defined in Data.Generics.Product.Internal.Subtype

Methods

gsmash :: sup p -> (a :*: b) p -> (a :*: b) p 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 # 
Instance details

Defined in Data.Generics.Product.Internal.Subtype

Methods

gsmash :: sup p0 -> S1 (MetaSel (Just field) p f b) t p0 -> S1 (MetaSel (Just field) p f b) t p0 Source #

class GHasConstraints (c :: * -> * -> Constraint) s t where Source #

Methods

gconstraints :: TraversalC c (s x) (t x) Source #

Instances
GHasConstraints c (V1 :: Type -> Type) (V1 :: Type -> Type) Source # 
Instance details

Defined in Data.Generics.Product.Internal.Constraints

Methods

gconstraints :: TraversalC c (V1 x) (V1 x) Source #

GHasConstraints c (U1 :: Type -> Type) (U1 :: Type -> Type) Source # 
Instance details

Defined in Data.Generics.Product.Internal.Constraints

Methods

gconstraints :: TraversalC c (U1 x) (U1 x) Source #

c a b => GHasConstraints c (Rec0 a) (Rec0 b) Source # 
Instance details

Defined in Data.Generics.Product.Internal.Constraints

Methods

gconstraints :: TraversalC c (Rec0 a x) (Rec0 b x) Source #

(GHasConstraints c l l', GHasConstraints c r r') => GHasConstraints c (l :+: r) (l' :+: r') Source # 
Instance details

Defined in Data.Generics.Product.Internal.Constraints

Methods

gconstraints :: TraversalC c ((l :+: r) x) ((l' :+: r') x) Source #

(GHasConstraints c l l', GHasConstraints c r r') => GHasConstraints c (l :*: r) (l' :*: r') Source # 
Instance details

Defined in Data.Generics.Product.Internal.Constraints

Methods

gconstraints :: TraversalC c ((l :*: r) x) ((l' :*: r') x) Source #

GHasConstraints c s t => GHasConstraints c (M1 i m s) (M1 i m t) Source # 
Instance details

Defined in Data.Generics.Product.Internal.Constraints

Methods

gconstraints :: TraversalC c (M1 i m s x) (M1 i m t x) Source #

class GHasConstraints' (c :: * -> Constraint) (f :: * -> *) where Source #

Constrained traversal.

Methods

gconstraints' :: forall g x. Applicative g => (forall a. c a => a -> g a) -> f x -> g (f x) Source #

Instances
GHasConstraints' c (U1 :: Type -> Type) Source # 
Instance details

Defined in Data.Generics.Product.Internal.Constraints

Methods

gconstraints' :: Applicative g => (forall a. c a => a -> g a) -> U1 x -> g (U1 x) Source #

c a => GHasConstraints' c (Rec0 a) Source # 
Instance details

Defined in Data.Generics.Product.Internal.Constraints

Methods

gconstraints' :: Applicative g => (forall a0. c a0 => a0 -> g a0) -> Rec0 a x -> g (Rec0 a x) Source #

(GHasConstraints' c l, GHasConstraints' c r) => GHasConstraints' c (l :+: r) Source # 
Instance details

Defined in Data.Generics.Product.Internal.Constraints

Methods

gconstraints' :: Applicative g => (forall a. c a => a -> g a) -> (l :+: r) x -> g ((l :+: r) x) Source #

(GHasConstraints' c l, GHasConstraints' c r) => GHasConstraints' c (l :*: r) Source # 
Instance details

Defined in Data.Generics.Product.Internal.Constraints

Methods

gconstraints' :: Applicative g => (forall a. c a => a -> g a) -> (l :*: r) x -> g ((l :*: r) x) Source #

GHasConstraints' c f => GHasConstraints' c (M1 m meta f) Source # 
Instance details

Defined in Data.Generics.Product.Internal.Constraints

Methods

gconstraints' :: Applicative g => (forall a. c a => a -> g a) -> M1 m meta f x -> g (M1 m meta f x) Source #

class GIsList (f :: Type -> Type) (g :: Type -> Type) (as :: [Type]) (bs :: [Type]) | f -> as, g -> bs, bs f -> g, as g -> f where Source #

Minimal complete definition

glist

Methods

glist :: Iso (f x) (g x) (HList as) (HList bs) Source #

glistR :: Iso (HList bs) (HList as) (g x) (f x) Source #

Instances
GIsList (U1 :: Type -> Type) (U1 :: Type -> Type) ([] :: [Type]) ([] :: [Type]) Source # 
Instance details

Defined in Data.Generics.Product.Internal.HList

Methods

glist :: Iso (U1 x) (U1 x) (HList []) (HList []) Source #

glistR :: Iso (HList []) (HList []) (U1 x) (U1 x) Source #

GIsList (Rec0 a) (Rec0 b) (a ': ([] :: [Type])) (b ': ([] :: [Type])) Source # 
Instance details

Defined in Data.Generics.Product.Internal.HList

Methods

glist :: Iso (Rec0 a x) (Rec0 b x) (HList (a ': [])) (HList (b ': [])) Source #

glistR :: Iso (HList (b ': [])) (HList (a ': [])) (Rec0 b x) (Rec0 a x) 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 # 
Instance details

Defined in Data.Generics.Product.Internal.HList

Methods

glist :: Iso ((l :*: r) x) ((l' :*: r') x) (HList cs) (HList cs') Source #

glistR :: Iso (HList cs') (HList cs) ((l' :*: r') x) ((l :*: r) x) Source #

GIsList f g as bs => GIsList (M1 t meta f) (M1 t meta g) as bs Source # 
Instance details

Defined in Data.Generics.Product.Internal.HList

Methods

glist :: Iso (M1 t meta f x) (M1 t meta g x) (HList as) (HList bs) Source #

glistR :: Iso (HList bs) (HList as) (M1 t meta g x) (M1 t meta f x) 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 #

Methods

point :: Lens (HList as) (HList bs) a b Source #

Instances
(IndexList (n - 1) as' bs' a b, as ~ (x ': as'), bs ~ (x ': bs')) => IndexList n as bs a b Source # 
Instance details

Defined in Data.Generics.Product.Internal.HList

Methods

point :: Lens (HList as) (HList bs) a b Source #

(as ~ (a ': as'), bs ~ (b ': as')) => IndexList 0 as bs a b Source # 
Instance details

Defined in Data.Generics.Product.Internal.HList

Methods

point :: Lens (HList as) (HList bs) a b Source #

data HList (as :: [Type]) where Source #

Constructors

Nil :: HList '[] 
(:>) :: a -> HList as -> HList (a ': as) infixr 5 
Instances
(Semigroup a, Semigroup (HList as)) => Semigroup (HList (a ': as)) Source # 
Instance details

Defined in Data.Generics.Product.Internal.HList

Methods

(<>) :: HList (a ': as) -> HList (a ': as) -> HList (a ': as) #

sconcat :: NonEmpty (HList (a ': as)) -> HList (a ': as) #

stimes :: Integral b => b -> HList (a ': as) -> HList (a ': as) #

Semigroup (HList ([] :: [Type])) Source # 
Instance details

Defined in Data.Generics.Product.Internal.HList

Methods

(<>) :: HList [] -> HList [] -> HList [] #

sconcat :: NonEmpty (HList []) -> HList [] #

stimes :: Integral b => b -> HList [] -> HList [] #

(Monoid a, Monoid (HList as)) => Monoid (HList (a ': as)) Source # 
Instance details

Defined in Data.Generics.Product.Internal.HList

Methods

mempty :: HList (a ': as) #

mappend :: HList (a ': as) -> HList (a ': as) -> HList (a ': as) #

mconcat :: [HList (a ': as)] -> HList (a ': as) #

Monoid (HList ([] :: [Type])) Source # 
Instance details

Defined in Data.Generics.Product.Internal.HList

Methods

mempty :: HList [] #

mappend :: HList [] -> HList [] -> HList [] #

mconcat :: [HList []] -> HList [] #

type family (as :: [k]) ++ (bs :: [k]) :: [k] where ... Source #

Equations

'[] ++ bs = bs 
(a ': as) ++ bs = a ': (as ++ bs) 

class Elem (as :: [(k, Type)]) (key :: k) (i :: Nat) a | as key -> i a Source #

Instances
(Elem xs key i a, pos ~ (i + 1)) => Elem (x ': xs :: [(k2, Type)]) (key :: k2) pos (a :: k1) Source # 
Instance details

Defined in Data.Generics.Product.Internal.HList

pos ~ 0 => Elem (a ': xs :: [(k, Type)]) (key :: k) pos (a :: (k, Type)) Source # 
Instance details

Defined in Data.Generics.Product.Internal.HList

class ListTuple (tuple :: Type) (as :: [Type]) | as -> tuple where Source #

Minimal complete definition

tupleToList, listToTuple

Associated Types

type ListToTuple as :: Type Source #

Methods

tupled :: Iso' (HList as) tuple Source #

tupleToList :: tuple -> HList as Source #

listToTuple :: HList as -> tuple Source #

Instances
ListTuple () ([] :: [Type]) Source # 
Instance details

Defined in Data.Generics.Product.Internal.HList

Associated Types

type ListToTuple [] :: Type Source #

Methods

tupled :: Iso' (HList []) () Source #

tupleToList :: () -> HList [] Source #

listToTuple :: HList [] -> () Source #

ListTuple a (a ': ([] :: [Type])) Source # 
Instance details

Defined in Data.Generics.Product.Internal.HList

Associated Types

type ListToTuple (a ': []) :: Type Source #

Methods

tupled :: Iso' (HList (a ': [])) a Source #

tupleToList :: a -> HList (a ': []) Source #

listToTuple :: HList (a ': []) -> a Source #

ListTuple (a, b) (a ': (b ': ([] :: [Type]))) Source # 
Instance details

Defined in Data.Generics.Product.Internal.HList

Associated Types

type ListToTuple (a ': (b ': [])) :: Type Source #

Methods

tupled :: Iso' (HList (a ': (b ': []))) (a, b) Source #

tupleToList :: (a, b) -> HList (a ': (b ': [])) Source #

listToTuple :: HList (a ': (b ': [])) -> (a, b) Source #

ListTuple (a, b, c) (a ': (b ': (c ': ([] :: [Type])))) Source # 
Instance details

Defined in Data.Generics.Product.Internal.HList

Associated Types

type ListToTuple (a ': (b ': (c ': []))) :: Type Source #

Methods

tupled :: Iso' (HList (a ': (b ': (c ': [])))) (a, b, c) Source #

tupleToList :: (a, b, c) -> HList (a ': (b ': (c ': []))) Source #

listToTuple :: HList (a ': (b ': (c ': []))) -> (a, b, c) Source #

ListTuple (a, b, c, d) (a ': (b ': (c ': (d ': ([] :: [Type]))))) Source # 
Instance details

Defined in Data.Generics.Product.Internal.HList

Associated Types

type ListToTuple (a ': (b ': (c ': (d ': [])))) :: Type Source #

Methods

tupled :: Iso' (HList (a ': (b ': (c ': (d ': []))))) (a, b, c, d) Source #

tupleToList :: (a, b, c, d) -> HList (a ': (b ': (c ': (d ': [])))) Source #

listToTuple :: HList (a ': (b ': (c ': (d ': [])))) -> (a, b, c, d) Source #

ListTuple (a, b, c, d, e) (a ': (b ': (c ': (d ': (e ': ([] :: [Type])))))) Source # 
Instance details

Defined in Data.Generics.Product.Internal.HList

Associated Types

type ListToTuple (a ': (b ': (c ': (d ': (e ': []))))) :: Type Source #

Methods

tupled :: Iso' (HList (a ': (b ': (c ': (d ': (e ': [])))))) (a, b, c, d, e) Source #

tupleToList :: (a, b, c, d, e) -> HList (a ': (b ': (c ': (d ': (e ': []))))) Source #

listToTuple :: HList (a ': (b ': (c ': (d ': (e ': []))))) -> (a, b, c, d, e) Source #

ListTuple (a, b, c, d, e, f) (a ': (b ': (c ': (d ': (e ': (f ': ([] :: [Type]))))))) Source # 
Instance details

Defined in Data.Generics.Product.Internal.HList

Associated Types

type ListToTuple (a ': (b ': (c ': (d ': (e ': (f ': [])))))) :: Type Source #

Methods

tupled :: Iso' (HList (a ': (b ': (c ': (d ': (e ': (f ': []))))))) (a, b, c, d, e, f) Source #

tupleToList :: (a, b, c, d, e, f) -> HList (a ': (b ': (c ': (d ': (e ': (f ': [])))))) Source #

listToTuple :: HList (a ': (b ': (c ': (d ': (e ': (f ': [])))))) -> (a, b, c, d, e, f) Source #

ListTuple (a, b, c, d, e, f, g) (a ': (b ': (c ': (d ': (e ': (f ': (g ': ([] :: [Type])))))))) Source # 
Instance details

Defined in Data.Generics.Product.Internal.HList

Associated Types

type ListToTuple (a ': (b ': (c ': (d ': (e ': (f ': (g ': []))))))) :: Type Source #

Methods

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 # 
Instance details

Defined in Data.Generics.Product.Internal.HList

Associated Types

type ListToTuple (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': [])))))))) :: Type Source #

Methods

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 # 
Instance details

Defined in Data.Generics.Product.Internal.HList

Associated Types

type ListToTuple (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': []))))))))) :: Type Source #

Methods

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 # 
Instance details

Defined in Data.Generics.Product.Internal.HList

Associated Types

type ListToTuple (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': [])))))))))) :: Type Source #

Methods

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 # 
Instance details

Defined in Data.Generics.Product.Internal.HList

Associated Types

type ListToTuple (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': []))))))))))) :: Type Source #

Methods

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 # 
Instance details

Defined in Data.Generics.Product.Internal.HList

Associated Types

type ListToTuple (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': (m ': [])))))))))))) :: Type Source #

Methods

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 # 
Instance details

Defined in Data.Generics.Product.Internal.HList

Associated Types

type ListToTuple (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': (m ': (n ': []))))))))))))) :: Type Source #

Methods

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 # 
Instance details

Defined in Data.Generics.Product.Internal.HList

Associated Types

type ListToTuple (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': (m ': (n ': (o ': [])))))))))))))) :: Type Source #

Methods

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 # 
Instance details

Defined in Data.Generics.Product.Internal.HList

Associated Types

type ListToTuple (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': (m ': (n ': (o ': (p ': []))))))))))))))) :: Type Source #

Methods

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 # 
Instance details

Defined in Data.Generics.Product.Internal.HList

Associated Types

type ListToTuple (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': (m ': (n ': (o ': (p ': (q ': [])))))))))))))))) :: Type Source #

Methods

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 # 
Instance details

Defined in Data.Generics.Product.Internal.HList

Associated Types

type ListToTuple (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': (m ': (n ': (o ': (p ': (q ': (r ': []))))))))))))))))) :: Type Source #

Methods

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 # 
Instance details

Defined in Data.Generics.Product.Internal.HList

Associated Types

type ListToTuple (a ': (b ': (c ': (d ': (e ': (f ': (g ': (h ': (j ': (k ': (l ': (m ': (n ': (o ': (p ': (q ': (r ': (s ': [])))))))))))))))))) :: Type Source #

Methods

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 #

Equations

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] 

type family Param :: Nat -> k where ... Source #

newtype Rec (p :: Type) a x Source #

Constructors

Rec 

Fields

class (Coercible (Rep a) (RepN a), Generic a) => GenericN (a :: Type) where Source #

Associated Types

type RepN (a :: Type) :: Type -> Type Source #

Methods

toN :: RepN a x -> a Source #

fromN :: a -> RepN a x Source #

Instances
(Coercible (Rep a) (RepN a), Generic a) => GenericN a Source # 
Instance details

Defined in Data.Generics.Internal.GenericN

Associated Types

type RepN a :: Type -> Type Source #

Methods

toN :: RepN a x -> a Source #

fromN :: a -> RepN a x Source #

van Laarhoven optics

data Exchange a b s t Source #

Constructors

Exchange (s -> a) (b -> t) 
Instances
Profunctor (Exchange a b) Source # 
Instance details

Defined in Data.Generics.Internal.VL.Iso

Methods

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 # 
Instance details

Defined in Data.Generics.Internal.VL.Iso

Methods

fmap :: (a0 -> b0) -> Exchange a b s a0 -> Exchange a b s b0 #

(<$) :: a0 -> Exchange a b s b0 -> Exchange a b s a0 #

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 #

fromIso :: Iso s t a b -> Iso b a t s 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

mIso :: Iso (M1 i c f p) (M1 i c g p) (f p) (g p) Source #

M1 is just a wrapper around `f p`

kIso :: Iso (K1 r a p) (K1 r b p) a b Source #

recIso :: Iso (Rec r a p) (Rec r b p) a b Source #

prodIso :: Iso ((a :*: b) x) ((a' :*: b') x) (a x, b x) (a' x, b' x) Source #

iso :: (s -> a) -> (b -> t) -> Iso s t a b Source #

type Lens' s a = Lens s s a a Source #

Type alias for lens

type Lens s t a b = forall f. Functor f => (a -> f b) -> s -> f t Source #

view :: ((a -> Const a a) -> s -> Const a s) -> s -> a Source #

(^.) :: s -> ((a -> Const a a) -> s -> Const a s) -> a infixl 8 Source #

Getting

(.~) :: ((a -> Identity b) -> s -> Identity t) -> b -> s -> t infixr 4 Source #

set :: Lens s t a b -> b -> s -> t Source #

over :: ((a -> Identity b) -> s -> Identity t) -> (a -> b) -> s -> t Source #

lens2lensvl :: ALens a b s t -> Lens s t a b Source #

ravel :: (ALens a b a b -> ALens a b s t) -> Lens s t a b Source #

lens :: (s -> a) -> ((s, b) -> 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

type Prism' s a = Prism s s a a Source #

(^?) :: s -> ((a -> Const (First a) a) -> s -> Const (First a) s) -> Maybe a infixl 8 Source #

match :: Prism s t a b -> s -> Either t a Source #

(#) :: (Tagged b (Identity b) -> Tagged t (Identity t)) -> b -> t Source #

prism :: (b -> t) -> (s -> Either t a) -> Prism s t a b Source #

prismRavel :: (Market a b a b -> Market a b s t) -> Prism s t a b Source #

type APrismVL s t a b = Market a b a (Identity b) -> Market a b s (Identity t) Source #

withPrism :: APrismVL s t a b -> ((b -> t) -> (s -> Either t a) -> r) -> r Source #

prism2prismvl :: Market a b s t -> Prism s t a b Source #

build :: (Tagged b (Identity b) -> Tagged t (Identity t)) -> b -> t 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 #

type LensLikeC c f s = (forall a. c a => a -> f a) -> s -> f s 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 #

yap :: Applicative f => Yoneda f (a -> b) -> f a -> Yoneda f b Source #

newtype Curried f a Source #

Constructors

Curried 

Fields

Instances
Functor f => Functor (Curried f) Source # 
Instance details

Defined in Data.Generics.Internal.VL.Traversal

Methods

fmap :: (a -> b) -> Curried f a -> Curried f b #

(<$) :: a -> Curried f b -> Curried f a #

Functor f => Applicative (Curried f) Source # 
Instance details

Defined in Data.Generics.Internal.VL.Traversal

Methods

pure :: a -> Curried f a #

(<*>) :: Curried f (a -> b) -> Curried f a -> Curried f b #

liftA2 :: (a -> b -> c) -> Curried f a -> Curried f b -> Curried f c #

(*>) :: Curried f a -> Curried f b -> Curried f b #

(<*) :: Curried f a -> Curried f b -> Curried f a #

newtype Yoneda f a Source #

Constructors

Yoneda 

Fields

Instances
Functor (Yoneda f) Source # 
Instance details

Defined in Data.Generics.Internal.VL.Traversal

Methods

fmap :: (a -> b) -> Yoneda f a -> Yoneda f b #

(<$) :: a -> Yoneda f b -> Yoneda f a #

Applicative f => Applicative (Yoneda f) Source # 
Instance details

Defined in Data.Generics.Internal.VL.Traversal

Methods

pure :: a -> Yoneda f a #

(<*>) :: Yoneda f (a -> b) -> Yoneda f a -> Yoneda f b #

liftA2 :: (a -> b -> c) -> Yoneda f a -> Yoneda f b -> Yoneda f c #

(*>) :: Yoneda f a -> Yoneda f b -> Yoneda f b #

(<*) :: Yoneda f a -> Yoneda f b -> Yoneda f a #

liftYoneda :: Functor f => f a -> Yoneda f a Source #

lowerYoneda :: Yoneda f a -> f a Source #