h&\ Safe-InferredPkind-generics-thStore -generated instances for the current data type. This could also be done with StateT in deriveRepK but that's a more invasive change.kind-generics-thStore 4 instances to be produced after having typechecked -generated instances.kind-generics-thFlag to control support for type families, because that requires a different API (preDeriveGenericK, postDeriveGenericK instead of deriveGenericK). kind-generics-th/Whether to warn when a type family is detected.kind-generics-th Given the   of a data type (or, the  7 of a constructor belonging to a data type), generate  instances for that data type. You will likely need to enable most of these language extensions in order for GHC to accept the generated code:  DataKinds EmptyCase (if using an empty data type) FlexibleInstances MultiParamTypeClasses PolyKinds# (if using a poly-kinded data type) TemplateHaskell  TypeFamilies%If the data type uses type families,  warns that it skips the . instances that require special support for itUse  and  to support type families.Use  to silence the warnings.kind-generics-th Variant of  that doesn't emit warnings.kind-generics-th Generate : instances for data types that may mention type families.This $ is to be used in combination with . These two functions let us stage the compilation of the generated type instances, because GHC cannot compile them in a single group. generates type instances to promote type families that occur in the given data types (using  ; see  .https://hackage.haskell.org/package/fcf-family fcf-family ). The  instances are not produced at this stage, they are accumulated in some internal global queue.! produces all of the accumulated = instances. It should be called in a slice separated from . Multiple calls to  may precede .  ''MyT1  ''MyT2  ''MyT3  'You will need to enable the extensions UndecidableInstances and  PolyKinds (even if your data types are not poly-kinded) in addition to those mentioned in the documentation of .kind-generics-thSee . kind-generics-thReturn a pair of:-generated instances instances kind-generics-th/Warning to show when a type family is found by . kind-generics-th  with variable names instead of Type, all in left-to-right order.kind-generics-th9This assumes most uses are going to be unqualified names.kind-generics-th/Find type variable stored in types coming from " (should be of the form (v :: k))kind-generics-th tvSet ty returns  tvTy if ty:a. Is a type variable named tvTy , and b. tvTy is not an element of tvSet.Otherwise, returns .kind-generics-thIf a Type is a SigT, returns its kind signature. Otherwise, return Type.kind-generics-th-Variant of foldr for producing balanced listskind-generics-thExtract  the  ' from a type variable. If the argument ! is not a type variable, return .kind-generics-th Extract the  ' from a type variable. If the argument ) is not a type variable, throw an error.kind-generics-thCompose a function with itself n times. (nth rather than twice)kind-generics-thGenerate a list of fresh names with a common prefix, and numbered suffixes.kind-generics-th;Detect if a name occurs as an argument to some type family.kind-generics-thSplit a chain of !s to a linear chain of arguments.kind-generics-th&Resolve all of the type synonyms in a .     !"#$%&'()*+, kind-generics-th-0.2.3.1-inplaceGenerics.Kind.THderiveGenericKderiveGenericKQuietpreDeriveGenericKpostDeriveGenericK FcfifyQueuefcf-fmly-0.2.0.0-3c9b4f82 Fcf.Family.THfcfify GenericKQueuekind-generics-0.5.0.0-inplace Generics.KindGenericKFamilyFriendliness NoFamiliestemplate-haskellLanguage.Haskell.TH.SyntaxNamederiveGenericK' tyFamWarning tyFamWarning' quoteName getVarTNameth-bstrctn-0.5.0.0-8e7538e5Language.Haskell.TH.DatatypedatatypeInstTypesdistinctTyVarTypebase GHC.MaybeJustNothingtypeKindfoldBalvarTToName_maybeType varTToNamenTimes newNameListisInTypeFamilyApp splitAppTsAppTresolveConSynonymsConstructorInfo