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

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

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

Instances details
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 :: k1) (gb :: k1) Source #
Instance details

Defined in Data.Generics.Internal.Families.Changing