úÎW½R” Safe-Inferred     (C) 2015 Ryan Scott BSD-style (see the file LICENSE) Ryan ScottTemplate HaskellNone4A NameBase paired with the name of its map function.*A wrapper around Name which only uses the ¢ (not the entire Name) to compare for equality. For example, if you had two Names a_123 and a_456, they are not equal as Names, but they are equal as NameBases.õThis is useful when inspecting type variables, since a type variable in an instance context may have a distinct Name from a type variable within an actual constructor declaration, but we'd want to treat them as the same if they have the same 8 (since that's what the programmer uses to begin with).BExpands all type synonyms in a type. Written by Dan Rosén in the  genifunctors package (licensed under BSD3).#Extracts the name of a constructor.KGenerate a list of fresh names with a common prefix, and numbered suffixes.GRemove any occurrences of a forall-ed type variable from consideration.#Extracts the name from a TyVarBndr.#Extracts the kind from a TyVarBndr.NReplace the Name of a TyVarBndr with one from a Type (if the Type has a Name).)Applies a typeclass constraint to a type.ŸChecks to see if the last types in a data family instance can be safely eta- reduced (i.e., dropped), given the other types. This checks for three conditions: +All of the dropped types are type variables%All of the dropped types are distinct<None of the remaining types mention any of the dropped types&Extract the Name from a type variable.*Extract the NameBase from a type variable.6Peel off a kind signature from a Type (if it has one).Is the given type a variable? PIs the given type a type family constructor (and not a data family constructor)?!AAre all of the items in a list (which have an ordering) distinct?HThis uses Set (as opposed to nub) for better asymptotic time complexity."=Does the given type mention any of the NameBases in the list?#DDoes an instance predicate mention any of the NameBases in the list?$xThe number of arrows that compose the spine of a kind signature (e.g., (* -> *) -> k -> * has two arrows on its spine).%)Construct a type via curried application.&7Fully applies a type constructor to its type variables.'HSplit an applied type into its individual components. For example, this: Either Int Char would split to this: [Either, Int, Char] (ESplit a type signature by the arrows on its spine. For example, this: (Int -> String) -> Char -> () would split to this: [Int -> String, Char, ()] ))Like uncurryType, except on a kind level.*MOf form k1 -> k2 -> ... -> kn, where k is either a single kind variable or *.5+,-./01234 !"#$%&'()5*6789:;<=>?@ABCDE2+,-./01234 !"#$%&'()5*6789:;<=>?@AB3+,-./01234 !"#$%&'()5*6789:;<=>?@ABCDE(C) 2015 Ryan Scott BSD-style (see the file LICENSE) Ryan ScottTemplate HaskellNoneF6A representation of which function is being generated. Generates a Foldable\ instance declaration for the given data type or data family instance. This mimics how the -XDeriveFoldable! extension works since GHC 7.12.GGGenerates a Foldable instance declaration for a plain type constructor.HQGenerates a Foldable instance declaration for a data family instance constructor.I<Generates a the function declarations for foldr and foldMap.HFor why both foldr and foldMap are derived for Foldable, see Trac #7436.1Generates a lambda expression which behaves like foldMap (without requiring a Foldable instance). This mimics how the -XDeriveFoldable! extension works since GHC 7.12.1Generates a lambda expression which behaves like J (without requiring a Foldable instance). This mimics how the -XDeriveFoldable! extension works since GHC 7.12.KFGenerates a lambda expression which behaves like the FoldFun argument.LgGenerates a lambda expression for the given constructors. All constructors must be from the same type.M7Generates a lambda expression for a single constructor.NCGenerates a lambda expression for a single constructor's arguments.OEGenerates a lambda expression for a single argument of a constructor.P2Generates a lambda expression for a specific type.Q0Extracts a plain type constructor's information.R*Extracts a data family name's information.S:Extracts a data family instance constructor's information.ToDeduces the instance context, instance head, and eta-reduced type variables for a plain data type constructor.UsDeduces the instance context, instance head, and eta-reduced type variable for a data family instance constructor.VNGiven a TyVarBndr, apply a Foldable constraint to it if it has the right kind.WwEither the given data type doesn't have a type variable, or the type variable to be eta-reduced cannot realize kind *.X&A constructor has a function argument.YQThe data type has a DatatypeContext which mentions the eta-reduced type variable.Z†The data type mentions the eta-reduced type variable in a place other than the last position of a data type in a constructor's field.[uThe last type variable cannot be eta-reduced (see the canEtaReduce function for the criteria it would have to meet).!F\]GHIKLMNOPQRSTUVWXYZ[^_`abcdF]\GHIKLMNOPQRSTUVWXYZ[^_`abcde      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklderiving-compat-0.1Data.Foldable.DerivingPaths_deriving_compatData.Deriving.InternalderiveFoldable makeFoldMap makeFoldrcatchIOversionbindirlibdirdatadir libexecdir sysconfdir getBinDir getLibDir getDataDir getLibexecDir getSysconfDirgetDataFileName TyVarInfoNameBasetemplate-haskellLanguage.Haskell.TH.SyntaxnameBase expandSynconstructorName newNameListremoveForalledtvbNametvbKindreplaceTyVarName applyClass canEtaReduce varTToNamevarTToNameBaseunSigTisTyVar isTyFamily allDistinctmentionsNameBasepredMentionsNameBase numKindArrowsapplyTy applyTyCon unapplyTy uncurryTy uncurryKindcanRealizeKindStarChaingetNameSubst expandSynAppmkSubstsubst foldrConst foldMapConst getNameBasethd3 wellKindedcanRealizeKindStardistinctKindVars tvbToTypederivingCompatPackageKeymkDerivingCompatName_vfoldrConstValNamefoldMapConstValNamefoldableTypeName errorValName foldrValNamefoldMapValNamemappendValName memptyValName$fShowNameBase $fOrdNameBase $fEqNameBaseFoldFunderiveFoldablePlainTyderiveFoldableDataFamInst foldFunDecsbaseGHC.Basefoldr makeFoldFunmakeFoldFunForConsmakeFoldFunForConmakeFoldFunForArgsmakeFoldFunForArgmakeFoldFunForType withTyCon withDataFamwithDataFamInstConcxtAndTypePlainTycxtAndTypeDataFamInstConapplyConstraintderivingKindErrornoFunctionsErrordatatypeContextErroroutOfPlaceTyVarErroretaReductionErrorFoldMapFoldrfoldFunConstName foldFunName foldFunTriv foldFunAppfoldFunCombine foldrCombinefoldMapCombine