Îõ³h&vó(      !"#$%&' Safe-Inferred)*0158ÂÈÌ×ÙÚÜãïí()*+,-./ Safe-Inferred)*0158ÂÈÌ×ÙÚÜãïÔ0polysemy-pluginThings that can be found in a 1 environment.2polysemy-pluginHKD indexed by the  ; used by .polysemy-pluginData kind for 2.polysemy-pluginÎAll of the things from "polysemy" that we need access to in the plugin. When l ~ 'Locations0, each of these is just a pair of strings. When  l ~ 'Things(, it's actually references to the stuff.3polysemy-plugin$All of the things we need to lookup.4polysemy-plugin-GHC-version-dependent access of the UnitStatepolysemy-pluginLookup all of the .5polysemy-plugin Transform a 2 'Locations into a 2 'Things. Safe-Inferred)*0158ÂÈÌ×ÙÚÜãï ˆ polysemy-plugin6 s don't have 7 or 8‡ instances by default, even though there are functions in GHC that implement these operations. This newtype gives us those instances. polysemy-plugin>A wrapper for two types that we want to say have been unified.polysemy-plugin corresponds to whether we are only trying to solve a single MemberÆ constraint right now. If so, we *must* produce a unification wanted.polysemy-plugin­Depending on the context in which we're solving a constraint, we may or may not want to force a unification of effects. For example, when defining user code whose type is Member (State Int) r => ... , if we see get :: Sem r s, we should unify s ~ Int.polysemy-plugin3Determine whether or not two effects are unifiable.ŒAll free variables in [W] constraints are considered skolems, and thus are not allowed to unify with anything but themselves. This properly handles all cases in which we are unifying ambiguous [W] constraints (which are true type variables) against [G] constraints.polysemy-pluginéFilter out the unifications we've already emitted, and then give back the things we should put into the S.Set Unification*, and the new constraints we should emit.polysemy-pluginwantedpolysemy-plugingiven    Safe-Inferred)*0158ÂÈÌ×ÙÚÜãï Ðpolysemy-plugin>Returns the head of the list iff there is exactly one element. polysemy-pluginLike , but in the context of an :.!polysemy-pluginCount the number of times a is present in the list. ! ! Safe-Inferred%&()*0158?ÂÈÌÑ×ÙÚÜãï©;polysemy-pluginCorresponds to a   ! constraint. For example, given Member (State s) r, we would get:<polysemy-plugin State=polysemy-plugin State s>polysemy-plugin r?polysemy-pluginLike @ , but has an 8 instance.Apolysemy-plugin,Given a list of constraints, filter out the ;s.Bpolysemy-plugin&Get evidence in scope that aren't the ;s.Cpolysemy-pluginIf there's a unique given Member4 that would cause the program to typecheck, use it.Dpolysemy-plugin!checkExtraEvidence givens subst c returns E' iff we can prove that the constraint c holds under the substitution subst in the context of givens.Fpolysemy-plugin)Given an effect, compute its effect name.Gpolysemy-plugin?Generate a wanted unification for the effect described by the ; and the given effect.Hpolysemy-pluginðIt's very important that we don't try to unify entire effects when we're in interpreter mode. It's OK to unify  T x ~ T y , but never e ~ T yŽ. This function takes then "given" of an interpreter, and produces a singleton skolem set iff the outermost effect to be unified is a tyvar.Ipolysemy-plugin?Generate a wanted unification for the effect described by the ; and the given effect --- if they can be unified in this context.Jpolysemy-plugin6Determine if there is exactly one wanted find for the r in question.Kpolysemy-pluginReturns E if we can prove the given @, has a (fully instantiated) instance. Uses LÚ to cache the results of any instances it needs to prove in service of the original goal.Cpolysemy-plugin Extra wantedspolysemy-plugin Extra givenspolysemy-pluginGoalpolysemy-pluginMember constraintsIpolysemy-pluginThe given effect.Jpolysemy-plugin Wanted findspolysemy-plugin Effect row"" Safe-Inferred)*0158ÂÈÌ×ÙÚÜãïí''Í    !"#$%&'()*+,-./0123456789:;<=>?9@ABCDBCEBFGHIJKLMNO9@PQRSTBFUVWXYZ[\]^ßpolysemy-plugin-0.4.5.1-inplacePolysemy.Plugin.Fundep.Stuff"Polysemy.Plugin.Fundep.UnificationPolysemy.Plugin.Fundep.UtilsPolysemy.Plugin.FundepPolysemy.PluginPaths_polysemy_plugin Control.MonadwhenPolysemy.Internal.UnionFind LookupState LocationsThings PolysemyStuff findClasssemTyCon polysemyStuff$fCanLookupTyCon$fCanLookupClassOrdType getOrdType Unification _unifyLHS _unifyRHS SolveContext FunctionDefInterpreterUse mustUnifyunifytryUnifyUnivarsButNotSkolemsunzipNewWanteds$fOutputableSolveContext $fOrdOrdType $fEqOrdType$fEqUnification$fOrdUnification$fEqSolveContext$fOrdSolveContextsingleListToJustwhenA countLength fundepPlugin$fOrdPredType' $fEqPredType'$fOutputableFindConstraint$fOutputablePredType'pluginversiongetDataFileName getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDir CanLookupghc GHC.Tc.Types TcPluginMThingOfpolysemyStuffLocations getUnitStatedoLookupGHC.Core.TyCo.RepTypeghc-prim GHC.ClassesEqOrd GHC.TypesBoolbaseGHC.Base AlternativeFindConstraint fcEffectNamefcEffectfcRow PredType'PredTypegetFindConstraintsgetExtraEvidencefindMatchingEffectIfSingularcheckExtraEvidenceTrue getEffName mkWantedForceskolemsForInterpretermkWantedexactlyOneWantedForR getInstancetransformers-0.5.6.2Control.Monad.Trans.State.LazyStateT