h*31      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFG H 1.8.2 (C) 2021, QBayLogic B.V.BSD2 (see the file LICENSE)%QBayLogic B.V.  Safe-Inferred 1 clash-lib-hedgehog Generate a I with the specified core type. If the type does not correspond to a known  PrimTyCon (as defined in Clash.Core.TysPrim) then an error is returned. clash-lib-hedgehog#The type of the literal to generate  (C) 2021, QBayLogic B.V.BSD2 (see the file LICENSE)%QBayLogic B.V.  Safe-Inferred1clash-lib-hedgehogThe configuration of Haskell / Clash which the generated source adheres to. These are typically things which change what a user could potentially have written in a source file, such as language extensions.clash-lib-hedgehogThe CoreGenT monad keeps track of features like language extensions which have an impact on what can be generated. This allows more meaningful random generation, as the output of generators can be constrained to the same variant of Haskell / Clash used by the caller.clash-lib-hedgehog*Run a generator that generates types from  clash-lib. This is intended to transform another monad which implements  .clash-lib-hedgehogThe default configuration matches the set of language extensions which are enabled by default when running clash / clashi. For most projects, this will likely be the most representative set of options.  (C) 2021, QBayLogic B.V.BSD2 (see the file LICENSE)%QBayLogic B.V.  Safe-Inferred 1 R'clash-lib-hedgehogDetermine the bias of an item. This is used to set the weight of that item so we can sample using the   generator instead of   or  .Where might you want to introduce such a bias? If there is a collection of elements where there is a likeliness that real code would use certain values more or less, we want to be able to capture this. An obvious example of this is the TyConMap, where without it every constructor would have an even weighting, when in reality some (like Void# or Addr# are much less likely to appear in code written by a Clash user).'('((C) 2021, QBayLogic B.V.BSD2 (see the file LICENSE)%QBayLogic B.V.  Safe-Inferred 1 *+-,'(.*+-,'(.(C) 2021, QBayLogic B.V.BSD2 (see the file LICENSE)%QBayLogic B.V.  Safe-Inferred 1 Jclash-lib-hedgehogGenerate a name by applying a function to arbitrary text. This is used to ensure that names have the correct case for the thing being named.5clash-lib-hedgehogGenerate a name using the given generator, while ensuring the unique of the generated name does not occur in the given UniqMap.6clash-lib-hedgehogGenerate a collection of names, from a supplied function to generate names and the number of names to generate.TODO While this gives "unique" names because the uniques are different, it can generate multiple names with the same OccName./0123456/0123456(C) 2021, QBayLogic B.V.BSD2 (see the file LICENSE)%QBayLogic B.V.  Safe-Inferred 17clash-lib-hedgehog5Generate a fresh type variable of the specified kind.8clash-lib-hedgehog2Generate a fresh identifier of the specified kind.9clash-lib-hedgehog8Generate a fresh local identifier of the specified kind.:clash-lib-hedgehog9Generate a fresh global identifier of the specified kind.;clash-lib-hedgehogGenerate a collection of variables, from a supplied function to generate variables and the kinds / types of variables to generate.TODO While this gives "unique" vars because the uniques are different, it can generate multiple vars with the same OccName.789:;789:;(C) 2021, QBayLogic B.V.BSD2 (see the file LICENSE)%QBayLogic B.V.  Safe-Inferred 1Kclash-lib-hedgehogClassify a type or kind according to some criteria. The classification of a type or kind is used to determine the pre-defined types / kinds which can be used in hole fills. See classify and useTyCon.Lclash-lib-hedgehogUses -XDataKindsMclash-lib-hedgehog(Uses -XPolyKinds (if classifying a kind)Nclash-lib-hedgehogUses -XRankNTypesOclash-lib-hedgehogUses -XTypeFamiliesPclash-lib-hedgehogClassify the groups that a type / kind belongs to, in order to filter out kinds which are not compatible with the chosen . This combines multiple checks into one for efficiency, to prevent multiple passes over each kind which can potentially be used.Qclash-lib-hedgehogDecide whether to use a type constructor based on the configuration and the result of  classifyKind. A type constructor is not usable if it uses any features which are not included in the current configuration.<clash-lib-hedgehogGenerate a function where the codomain is the given type / kind. Any other restrictions are enforced by the given generator. This can be used with generators for kinds and types.=clash-lib-hedgehogGenerate a closed kind (one without any free variables). If you want to be able to use free variables in a kind, see >.>clash-lib-hedgehog-Generate a kind which is valid for the given R<. The kind may contain free variables which are given in a S5, and is a valid fit for a hole with the given kind.N.B. Although the kind generated is a fit for the given hole, calling a function like  may return a different kind. This is because quantifiers are both the introduction rule for kind arrows and a kind former of their own right, so for the hole Type -> Typea generated fit might beforall a. a -> a*but this is then inferred to have the kindType?clash-lib-hedgehogGenerate a polymorphic type which is valid for the given environment. The generated type should have the specified kind, and no free variables.@clash-lib-hedgehogGenerate a polymorphic type which is valid for the given environment. The generated type should have the specified kind, and may contain the specified free variables.Aclash-lib-hedgehogGenerate a monomorphic type which is valid for the given environment. The generated type should have the specified kind, and no free variables.Bclash-lib-hedgehogGenerate a monomorphic type which is valid for the given environment. The generated type should have the specified kind, and may contain the specified free variables.Tclash-lib-hedgehogFor the given hole, attempt to use a variable in the environment to fill the hole, potentially solving subgoals if the variable is function kinded and the hole is the codomain.Uclash-lib-hedgehog=For the given hole, attempt to use a type constructor in the R to fill the hole, potentially solving subgoals if the constructor is function kinded and the hole is the codomain.Vclash-lib-hedgehogGenerate a "fresh" kind. This involves using the shape of the hole to generate a layer of the result kind, then solving any subgoal with either a variable, type constructor or another "fresh" kind.Wclash-lib-hedgehogGenerate a potentially polymorphic kind to fill a hole. This should not be exported as it can be used to circumvent constraints on generation which are given by the .>=@?BA<>=@?BA<(C) 2021, QBayLogic B.V.BSD2 (see the file LICENSE)%QBayLogic B.V.  Safe-Inferred 1&7Xclash-lib-hedgehogSample a data constructor from the environment, potentially partially applying it so that the type fits the hole. If there are no possible fits for the hole in the environment, an alternative generator is used instead.Yclash-lib-hedgehogAttempt to sample an identifier which can be made to fit a hole of the desired type. If this is not possible (due to nothing in the environment matching) then the given alternative generator is used instead.Fclash-lib-hedgehogGenerate a term that is valid for the given type constructor map and environment of free type and term variables. The term generated must have the specified type.Zclash-lib-hedgehogGenerate a "fresh" term, i.e. one which is randomly created according to the type of the hole, rather than sampling from the known variables or data constructors.This generator will fail if there are no values for the given hole.Xclash-lib-hedgehog#The types in scope while generatingclash-lib-hedgehogThe hole to generate a fit forclash-lib-hedgehog>A generator for sub-holes (used when partially applying a fit)clash-lib-hedgehog,A generator to use if there are no hole fitsYclash-lib-hedgehog+The currently bound type and term variablesclash-lib-hedgehogThe hole to generate a fit forclash-lib-hedgehog>A generator for sub-holes (used when partially applying a fit)clash-lib-hedgehog,A generator to use if there are no hole fitsFclash-lib-hedgehog#The types in scope while generatingclash-lib-hedgehog+The currently bound type and term variablesclash-lib-hedgehog$The type of the term being generatedFF (C) 2021, QBayLogic B.V.BSD2 (see the file LICENSE)%QBayLogic B.V.  Safe-Inferred 1,Gclash-lib-hedgehogGenerate a list of data constructors for a type. This biases towards creating constructors which match some common form seen in code, such as simple enums with no fields, or records.[clash-lib-hedgehog%Generate data constructors for a type(data D a1 a2 ... an = C1 | C2 | ... | CKwhere every constructor is nullary, but the type constructor may have an arbitrary number of phantom type parameters.\clash-lib-hedgehog%Generate data constructors for a typedata D a1 a2 ... an = C1 { ... } | C2 { ... } | ... | CK { ... }7where every constructor is either nullary, or a record.]clash-lib-hedgehogGenerate data constructors for a type which does not match any common idiom. Since this can generate any possible data constructor, it can sometimes produce less representative results.^clash-lib-hedgehogGenerate strictness annotations for data constructor arguments. This ensures that any types which are always strict, e.g. Int#, are strict and types which may be lazy have a random strictness assigned.This generator shrinks towards choosing lazy by default for types where it is possible._clash-lib-hedgehog+Generate a field label for use in a record.Gclash-lib-hedgehog6The number of constructors to create for the data typeclash-lib-hedgehog2The types already in scope when defining this typeclash-lib-hedgehogThe name of the AlgTyCon the constructors belong toclash-lib-hedgehogThe kind of the AlgTyCon the constructors belong toGG (C) 2021, QBayLogic B.V.BSD2 (see the file LICENSE)%QBayLogic B.V.  Safe-Inferred 11Hclash-lib-hedgehogA TyConMap contains all the algebraic data types and type families that are used in a program. This is typically the first thing that should be generated, as calls to other generators like genKind or  genTypeFrom will likely want to use the type constructors added to the TyConMap.7TODO It would be nice if this also included types from  clash-prelude like Signal and the sized number types. Maybe we want to hook into  clash-ghc0 to load type constructors and primitives from  Clash.Prelude.`clash-lib-hedgehogGenerate a new algebraic type constructor using the types that are already in scope. This will also promote data constructors if the configuration supports  -XDataKinds.aclash-lib-hedgehogGenerate a new type family, using the types that are already in scope.bclash-lib-hedgehogRefine a type, selecting one of the free variables and substituting it for a type constructor of the desired kind (filling in any holes with new type variables). For example, successive calls may give1a ~> A b c ~> A (B b) c ~> A (B b) C ~> A (B D) CHH ! " # $%&&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\] ^ _`abcdefghij`kl`mnopqrstu v w x y z { | } clash-lib-hedgehog-1.8.2-inplaceClash.Hedgehog.Core.MonadClash.Hedgehog.Core.LiteralClash.Hedgehog.Internal.BiasClash.Hedgehog.UniqueClash.Hedgehog.Core.NameClash.Hedgehog.Core.VarClash.Hedgehog.Core.TypeClash.Hedgehog.Core.TermClash.Hedgehog.Core.DataConClash.Hedgehog.Core.TyConclash-lib-hedgehog Hedgehog.Gen frequencyelementchoiceClash.Core.HasTypeinferCoreKindOf mtl-2.3.1Control.Monad.Reader.Class MonadReaderasklocalreaderbaseGHC.Base Alternativeempty<|>somemanyhedgehog-1.5-24c9f4f7c6f0e11e16cdf595e9d86e805c694f37df9a410dab1f431962873bc6Hedgehog.Internal.GenMonadGenGenBasetoGenTfromGenTgenLiteralFrom CoreGenConfigallowDataKindsallowPolyKindsallowRankNTypesallowTypeFamiliesallowUndecidableInstancesCoreGenT runCoreGenT defaultConfigcanGenDataKindscanGenPolyKindscanGenRankNTypescanGenTypeFamiliescanGenUndecidableInstances$fAlternativeCoreGenT$fApplicativeCoreGenT$fFunctorCoreGenT$fMonadCoreGenT$fMonadFailCoreGenT$fMonadGenCoreGenT$fMonadIOCoreGenT"$fMonadReaderCoreGenConfigCoreGenT$fMonadTransCoreGenT$fShowCoreGenConfigBiasbiasOf $fBiasTyCon genUnique genUniqMapsampleAnyUniqMap sampleUniqMapsampleUniqMapBiased genKindName genTypeName genTyConName genTermNamegenDataConName genVarName genFreshNamegenNamesgenTyVargenId genLocalId genGlobalIdgenVarsgenWithCodomaingenClosedKindFrom genKindFromgenClosedPolyTypegenPolyTypeFromgenClosedMonoTypegenMonoTypeFrom $fMonoidClass$fSemigroupClass $fShowClass genTermFromgenDataConsFrom genTyConMapclash-lib-1.8.2-inplaceClash.Core.LiteralLiteralgenOccNameWithClasscDatacPolycRankNcFamilyclassifyuseTyConClash.Core.TyConTyConMapClash.Data.UniqMapUniqMap sampleTyVarOr sampleTyConOr genFreshKind genPolyKindsampleDataConOr sampleIdOr genFreshTermgenSimpleDataConsgenRecordDataConsgenAnyDataCons genStrictness genFieldLabelgenAlgTyConFromgenFunTyConFrom refineArg