Data.Generics.Internal.Families.Changing

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

Safe Haskell | Safe-Inferred
Language | Haskell2010

Data.Generics.Internal.Families.Changing

Synopsis

- type Indexed (t :: k) = 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)

# Documentation

type Indexed (t :: k) = Indexed' t 0 #

type family Infer s a' b where ... #

Equations

Infer (s a) a' b = ReplaceArgs (s a) (Unify a' b) |
Infer s _1 _2 = s |

data PTag #

Constructors

PTag |

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

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

Equations

LookupParam (param n :: k) m = 'Nothing :: Maybe Nat |
LookupParam (a (_1 m) :: k2) n = IfEq m n ('Just 0) (MaybeAdd (LookupParam a n) 1) |
LookupParam (a _1 :: k2) n = MaybeAdd (LookupParam a n) 1 |
LookupParam (a :: k) _1 = 'Nothing :: Maybe Nat |

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

Equations

ArgAt (t a :: k) 0 = a |
ArgAt (t a :: k2) n = ArgAt t (n - 1) :: j |

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

Equations

ArgCount (f a :: k2) = 1 + ArgCount f |
ArgCount (a :: k) = 0 |

class UnifyHead (a :: k) (b :: k) #

Ensure that the types `a` and `b` are both applications of the same constructor. The arguments may be different.

#### Instances

Instances details

a ~ b => UnifyHead (a :: k) (b :: k) # |
Instance details Defined in Data.Generics.Internal.Families.Changing
(gb ~ g b, UnifyHead f g) => UnifyHead (f a :: k1) (gb :: k1) # |
Instance details Defined in Data.Generics.Internal.Families.Changing