h&chS      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQR Safe-Inferred/_ singletons-thThis class (which users should never see) is to be instantiated in order to use an otherwise-unused data constructor, such as the "kind-inference" data constructor for defunctionalization symbols. Safe-Inferred ./05STUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ Safe-Inferred  singletons-thGenerate a new Unique singletons-this a valid Haskell infix data constructor (i.e., does it begin with a colon?) singletons-thIs an identifier a legal data constructor name in Haskell? That is, is its first character an uppercase letter (prefix) or a colon (infix)? singletons-thIs an identifier uppercase?"Note that this will always return  for infix names, since the concept of upper- and lower-case doesn't make sense for non-alphabetic characters. If you want to check if a name is legal as a data constructor, use the  function. singletons-thNon@capture-avoiding substitution. (If you want capture-avoiding substitution, use substTy from !Language.Haskell.TH.Desugar.Subst. singletons-thCall  first to ensure we have a # in the type namespace, then call . Safe-Inferred singletons-thIf a . begins with one or more underscores, return  (us, rest), where us9 contain all of the underscores at the beginning of the  and rest contains the remainder of the . Otherwise, return .(C) 2019 Ryan ScottBSD-style (see LICENSE) Ryan Scott experimental non-portable Safe-Inferred  singletons-th#A convenient implementation of the   class. Use by calling .  singletons-th)Class that describes monads that contain . singletons-th.Options that control the finer details of how  singletons-th%'s Template Haskell machinery works. singletons-thIf , then quoted declarations will be generated alongside their promoted and singled counterparts. If 0, then quoted declarations will be discarded. singletons-thIf , then SingKind! instances will be generated. If , they will be omitted entirely. This can be useful in scenarios where TH-generated SingKind instances do not typecheck (for instance, when generating singletons for GADTs). singletons-thGiven the name of the original data type or data constructor, produces the name of the promoted equivalent. Unlike the singling-related options, in which there are separate  and  functions, we combine the handling of promoted data types and data constructors into a single option. This is because the names of promoted data types and data constructors can be difficult to distinguish in certain contexts without expensive compile-time checks.Because of the  DataKinds extension, most data type and data constructor names can be used in promoted contexts without any changes. As a result, this option will act like the identity function 99% of the time. There are some situations where it can be useful to override this option, however, as it can be used to promote primitive data types that do not have proper type-level equivalents, such as Natural and Text. See the "Arrows, Nat, Symbol, and literals" section of the  singletons  >https://github.com/goldfirere/singletons/blob/master/README.mdREADME for more details. singletons-thGiven the name of the original, unrefined class, produces the name of the promoted equivalent of the class. singletons-thGiven the name of the original, unrefined value, produces the name of the promoted equivalent of the value. This is used for both top-level and let6-bound names, and the difference is encoded in the  = argument. If promoting a top-level name, the argument is . If promoting a let -bound name, the argument is  Just uniq, where uniq is a globally unique number that can be used to distinguish the name from other local definitions of the same name (e.g., if two functions both use let x = ... in x). singletons-thGiven the name of the original, unrefined data type, produces the name of the corresponding singleton type. singletons-thGiven the name of the original, unrefined class, produces the name of the singled equivalent of the class. singletons-thGiven the name of the original, unrefined data constructor, produces the name of the corresponding singleton data constructor. singletons-thGiven the name of the original, unrefined value, produces the name of the singled equivalent of the value. singletons-thGiven the original name and the number of parameters it is applied to (the  argument), produces a type-level function name that can be partially applied when given the same number of parameters.Note that defunctionalization works over both term-level names (producing symbols for the promoted name) and type-level names (producing symbols directly for the name itself). As a result, this callback is used for names in both the term and type namespaces. singletons-thSensible default . defaults to . That is, quoted declarations are generated alongside their promoted and singled counterparts. defaults to  . That is, SingKind instances are generated.The default behaviors for , promotedValueNamePrefix, , , , , and 1 are described in the "On names" section of the  singletons  >https://github.com/goldfirere/singletons/blob/master/README.mdREADME. singletons-thGiven the name of the original, unrefined, top-level value, produces the name of the promoted equivalent of the value. singletons-th+Given the name of the original, unrefined, let-bound value and its globally unique number, produces the name of the promoted equivalent of the value. singletons-thGiven the original name of a function (term- or type-level), produces a type-level function name that can be partially applied even without being given any arguments (i.e., 0 arguments). singletons-th Declare the " that a TH computation should use.% singletons-th Turn any  into an  .   Safe-Inferred=  Safe-Inferred#b  singletons-thOptions for controlling how types are promoted at a fine granularity. singletons-thIf  , invoke - on the argument type being promoted. See 6Note [Vanilla-type validity checking during promotion]. singletons-thIf , allow promoting wildcard types. Otherwise, throw an error. In most places, GHC disallows kind-level wildcard types, so rather than promoting such wildcards and getting an error message from GHC  post facto, we can catch such wildcards early and give a more descriptive error message instead. singletons-th Promote a  to the kind level and invoke . See 6Note [Vanilla-type validity checking during promotion]. singletons-th Promote a  to the kind level. This is suffixed with "_NC" because we do not invoke  here. See 6Note [Vanilla-type validity checking during promotion]. singletons-th The default : is not invoked.:Throw an error when attempting to promote a wildcard type. singletons-th Promote a / to the kind level. This is the workhorse for  and . singletons-thPromote a DTypeArg to the kind level. This is suffixed with "_NC" because we do not invoke checkVanillaDType here. See 6Note [Vanilla-type validity checking during promotion]. singletons-thPromote a DType to the kind level, splitting it into its type variable binders, argument types, and result type in the process.   Safe-Inferred#  Safe-Inferred#   Safe-Inferred% singletons-th:The bound type variables from the original type signature. singletons-th/The argument types of the signature (promoted). singletons-th'The context of the signature (singled). singletons-th,The result type of the signature (promoted). singletons-th9The type variables previously bound in the current scope. singletons-th2The kind variables for the singled type signature.  Safe-Inferred&(C) 2018 Ryan ScottBSD-style (see LICENSE) Ryan Scott experimental non-portable Safe-Inferred& Safe-Inferred&(C) 2018 Ryan ScottBSD-style (see LICENSE) Ryan Scott experimental non-portable Safe-Inferred* singletons-thDoes not contain variable singletons-thThe variable itself singletons-th(Type app, variable only in last argument singletons-th.Type app, variable other than in last argument singletons-th Forall type singletons-thDetect if a Name occurs as an argument to some type family. This makes an effort to exclude  oversaturated arguments to type families. For instance, if one declared the following type family:  type family F a :: Type -> Type Then in the type F a b, we would consider a to be an argument to F , but not b. singletons-thVariable to look for singletons-th How to fold singletons-thType to process(C) 2015 Richard EisenbergBSD-style (see LICENSE) Ryan Scott experimental non-portable Safe-Inferred* Safe-Inferred,  singletons-thThe original2 constructors (for inferring the instance context) singletons-thThe  singletons constructors singletons-thThe name of the data type singletons-thThe original2 constructors (for inferring the instance context)(C) 2018 Ryan ScottBSD-style (see LICENSE) Ryan Scott experimental non-portable Safe-Inferred,(C) 2017 Ryan ScottBSD-style (see LICENSE) Ryan Scott experimental non-portable Safe-Inferred.e singletons-thParenthesize an infix constructor name if it is being applied as a prefix function (e.g., data Amp a = (:&) a a) singletons-thTurn a context like ( a,  b) into (ShowSing a, ShowSing b),. This is necessary for standalone-derived  instances for singleton types.(C) 2015 Richard EisenbergBSD-style (see LICENSE) Ryan Scott experimental non-portable Safe-Inferred/  singletons-th#Make a *non-singleton* Ord instance(C) 2018 Ryan ScottBSD-style (see LICENSE) Ryan Scott experimental non-portable Safe-Inferred/(C) 2018 Ryan ScottBSD-style (see LICENSE) Ryan Scott experimental non-portable Safe-Inferred0(C) 2020 Ryan ScottBSD-style (see LICENSE) Ryan Scott experimental non-portable Safe-Inferred0(C) 2015 Richard EisenbergBSD-style (see LICENSE) Ryan Scott experimental non-portable Safe-Inferred1(C) 2015 Richard EisenbergBSD-style (see LICENSE) Ryan Scott experimental non-portable Safe-Inferred1(C) 2015 Richard EisenbergBSD-style (see LICENSE) Ryan Scott experimental non-portable Safe-Inferred4j singletons-th Split up a [DDec] into its pieces, extracting ! instances from deriving clauses singletons-th"The deriving strategy, if present. singletons-thThe class being derived (e.g., :), possibly applied to some number of arguments (e.g.,  C Int Bool). singletons-th ctx if ctx was provided via StandaloneDeriving.  if using a deriving clause. singletons-th$The data type argument to the class. singletons-thhttps://github.com/goldfirere/singletons/blob/master/README.mdREADME for further explanation.1 singletons-thPromote each declaration, discarding the originals. Note that a promoted datatype uses the same definition as an original datatype, so this will not work with datatypes. Classes, instances, and functions are all fine.2 singletons-thGenerate defunctionalization symbols for each of the provided type-level declaration ?s. See the "Promotion and partial application" section of the  singletons  >https://github.com/goldfirere/singletons/blob/master/README.mdREADME for further explanation.3 singletons-thProduce instances for PEq from the given types4 singletons-thProduce an instance for PEq from the given type5 singletons-thProduce instances for POrd from the given types6 singletons-thProduce an instance for POrd from the given type7 singletons-thProduce instances for PBounded from the given types8 singletons-thProduce an instance for PBounded from the given type9 singletons-thProduce instances for PEnum from the given types: singletons-thProduce an instance for PEnum from the given type; singletons-thProduce instances for PShow from the given types< singletons-thProduce an instance for PShow from the given type singletons-th InstanceSigs singletons-thInstantiations for class tyvars See Note [Promoted class method kinds]*/0123456789:;< Safe-InferredF= singletons-thGenerate singled definitions for each of the provided type-level declaration 5s. For example, the singletons-th package itself uses 2$(genSingletons [''Bool, ''Maybe, ''Either, ''[]]))to generate singletons for Prelude types.> singletons-thMake promoted and singled versions of all declarations given, retaining the original declarations. See the  >https://github.com/goldfirere/singletons/blob/master/README.mdREADME for further explanation.? singletons-thMake promoted and singled versions of all declarations given, discarding the original declarations. Note that a singleton based on a datatype needs the original datatype, so this will fail if it sees any datatype declarations. Classes, instances, and functions are all fine.@ singletons-thCreate instances of SEq for the given typesA singletons-thCreate instance of SEq for the given typeB singletons-thCreate instances of SDecide, , and  for each type in the list.C singletons-thCreate instances of SDecide, , and  for the given type.D singletons-thCreate instances of SOrd for the given typesE singletons-thCreate instance of SOrd for the given typeF singletons-thCreate instances of SBounded for the given typesG singletons-thCreate instance of SBounded for the given typeH singletons-thCreate instances of SEnum for the given typesI singletons-thCreate instance of SEnum for the given typeJ singletons-thCreate instance of SShow for the given type(Not to be confused with showShowInstance.)K singletons-thCreate instances of SShow for the given types(Not to be confused with M.)L singletons-thCreate instance of  for the given singleton type(Not to be confused with J.)M singletons-thCreate instances of  for the given singleton types(Not to be confused with K.)N singletons-thCreate an instance for SingI TyCon{N}, where N1 is the positive number provided as an argument.5Note that the generated code requires the use of the QuantifiedConstraints language extension.O singletons-thCreate an instance for SingI TyCon{N}, where N1 is the positive number provided as an argument.5Note that the generated code requires the use of the QuantifiedConstraints language extension. singletons-thIf given a non-empty list of , construct a case expression that brings singleton equality constraints into scope via pattern-matching. See "Note [Singling pattern signatures]. singletons-ththe result kind, if known(=>?@ABCDEFGHIJKLMNO(C) 2013 Richard EisenbergBSD-style (see LICENSE) Ryan Scott experimental non-portable Safe-InferredL}P singletons-th The function P generates a case expression where each right-hand side is identical. This may be useful if the type-checker requires knowledge of which constructor is used to satisfy equality or type-class constraints, but where each constructor is treated the same.Q singletons-th The function Q generates a case expression where each right-hand side is identical. This may be useful if the type-checker requires knowledge of which constructor is used to satisfy equality or type-class constraints, but where each constructor is treated the same. For Q , unlike P, the scrutinee is a singleton. But make sure to pass in the name of the original datatype, preferring ''Maybe over ''SMaybe.P singletons-th-The head of the type of the scrutinee. (Like ''Maybe or ''Bool.) singletons-th*The scrutinee, in a Template Haskell quote singletons-th%The body, in a Template Haskell quoteQ singletons-th>The head of the type the scrutinee's type is based on. (Like ''Maybe or ''Bool.) singletons-th*The scrutinee, in a Template Haskell quote singletons-th%The body, in a Template Haskell quote /0123456789:;<=>?@ABCDEFGHIJKLMNOPQ.>?=012/34@ABC56DE78FG9:HI; Sing (Maybe a) type instance Sing = SRepThe unexpected part is that Nat, Bool, and Maybe above are the real Nat, Bool, and Maybe&, not just promoted data constructors."Please note that this function is very$ experimental. Use at your own risk.R singletons-thA list of Template Haskell Name s for types /0123456789:;<=>?@ABCDEFGHIJKLMNOPQRR !"!#$%&'(&')&'*&'+&',&'-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|x}~                                                      &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&singletons-th-3.1-inplaceData.Singletons.TH)Data.Singletons.TH.SuppressUnusedWarningsData.Singletons.TH.OptionsData.Singletons.TH.CustomStarData.Singletons.TH.SyntaxData.Singletons.TH.UtilData.Singletons.TH.Names Data.Singletons.TH.Single.FixityData.Singletons.TH.Promote.Type Data.Singletons.TH.Promote.MonadData.Singletons.TH.Single.MonadData.Singletons.TH.Single.Type Data.Singletons.TH.Promote.DefunData.Singletons.TH.Single.DefunData.Singletons.TH.Single.Data Data.Singletons.TH.Deriving.Util!Data.Singletons.TH.Deriving.Infer Data.Singletons.TH.Single.Decide'Data.Singletons.TH.Deriving.Traversable Data.Singletons.TH.Deriving.ShowData.Singletons.TH.Deriving.Ord$Data.Singletons.TH.Deriving.Foldable#Data.Singletons.TH.Deriving.FunctorData.Singletons.TH.Deriving.Eq Data.Singletons.TH.Deriving.Enum#Data.Singletons.TH.Deriving.BoundedData.Singletons.TH.PartitionData.Singletons.TH.PromoteData.Singletons.TH.Singlebase Data.VoidVoidData.Type.EqualityRefl:~:SuppressUnusedWarningssuppressUnusedWarningssingletons-3.0.1-inplaceData.Singletons.DecideDecision DisprovedProvedRefutedSDecide%~OptionsM OptionsMonad getOptionsOptions genQuotedDecsgenSingKindInstspromotedDataTypeOrConNamepromotedClassNamepromotedValueNamesingledDataTypeNamesingledClassNamesingledDataConNamesingledValueNamedefunctionalizedNamedefaultOptionspromotedTopLevelValueNamepromotedLetBoundValueNamedefunctionalizedName0 withOptions$fOptionsMonadRWST$fOptionsMonadWriterT$fOptionsMonadStateT$fOptionsMonadReaderT$fOptionsMonadQWithAux$fOptionsMonadDsM$fOptionsMonadQ$fOptionsMonadOptionsM$fFunctorOptionsM$fApplicativeOptionsM$fMonadOptionsM$fMonadTransOptionsM$fQuoteOptionsM$fQuasiOptionsM$fMonadFailOptionsM$fMonadIOOptionsM$fDsMonadOptionsM genPromotionspromote promoteOnlygenDefunSymbolspromoteEqInstancespromoteEqInstancepromoteOrdInstancespromoteOrdInstancepromoteBoundedInstancespromoteBoundedInstancepromoteEnumInstancespromoteEnumInstancepromoteShowInstancespromoteShowInstance genSingletons singletonssingletonsOnlysingEqInstancessingEqInstancesingDecideInstancessingDecideInstancesingOrdInstancessingOrdInstancesingBoundedInstancessingBoundedInstancesingEnumInstancessingEnumInstancesingShowInstancesingShowInstancesshowSingInstanceshowSingInstancessingITyConInstancessingITyConInstancecasessCases singletonStarDerivedShowDecl DerivedEqDecl DerivedDeclded_declded_type_tyconded_type ded_mb_cxt ULetDecEnv ALetDecEnv LetDecEnv lde_bound_kvs lde_proms lde_infix lde_types lde_defns ULetDecRHS ALetDecRHS LetDecRHSUValue UFunctionAValue AFunctionIfAnn Unannotated AnnotatedAnnotationFlagADClauseADMatchADPatADWildPADSigPADBangPADTildePADConPADVarPADLitPADExpADSigEADLetEADCaseEADLamEADAppEADLitEADConEADVarE AInstDecl AClassDecl UInstDecl UClassDeclInstDeclid_methsid_sigs id_arg_tysid_nameid_cxt ClassDeclcd_atfscd_ldecd_fdscd_tvbscd_namecd_cxt FamilyInfoClosedOpenTypeFamilyDeclgetTypeFamilyDeclClosedTypeFamilyDeclOpenTypeFamilyDecl TySynDeclDataDeclSingDSigPaInfos PromDPatInfosprom_dpat_sig_kvsprom_dpat_vars VarPromotions valueBinding typeBinding infixDeclemptyLetDecEnvbuildLetDecEnv qNewUniqueisInfixDataCon isDataConNameisUpcaseghc-prim GHC.TypesFalse substTypedsReifyTypeNameInfoth-desugar-1.13-0168976c23da441aba0925b9e68c8024edbd388d2d5b17d6d8d2bd0c49a4adb1!Language.Haskell.TH.Desugar.ReifylookupTypeNameWithLocalstemplate-haskellLanguage.Haskell.TH.SyntaxName Language.Haskell.TH.Desugar.CoredsReifyQWithAuxrunQWAQWAUnravelM runUnravelMqReportWarning qReportError checkForRepcheckForRepInDeclstysOfConFieldsrecSelsOfConFieldsextractNameArgs extractNameextractRecSelNamesupcase toUpcaseStrnoPrefix prefixConName prefixName suffixNameuniquePrefixesextractTvbKindextractTvbName tvbToTypedefaultTvbToTypeKinddefaultMaybeToTypeKindinferMaybeKindTVresultSigToMaybeKindmaybeKindToResultSig maybeSigTravelVanillaDTypeunravelVanillaDTypecheckVanillaDTypeunravelVanillaDType_either countArgsfilterInvisTvbArgsreplaceTvbKind noExactTyVars noExactName substKind subst_tele subst_tvbs subst_tvb dropTvbKindfoldType foldTypeTvbsbuildDataDTvbsfoldExp orIfEmpty multiCaseevalWithoutAux evalForAux evalForPair addBinding addElement concatMapM mapMaybeMlistifyfstOf3liftFstliftSndsnocView partitionWithpartitionWithMpartitionLetDecs zipWith3M mapAndUnzip3M isHsLettersplitUnderscoresGHC.BaseString GHC.MaybeJustNothingboolNameandName compareName minBoundName maxBoundNamerepNamenilNameconsNamelistNametyFunArrowName applyNameapplyTyConNameapplyTyConAux1Name symbolName stringNameeqNameordName boundedName orderingNamesingFamilyName singIName singI1Name singI2Name singMethName liftSingName liftSing2Name toSingName fromSingName demoteName withSingINamesingKindClassNamesomeSingTypeNamesomeSingDataNamesDecideClassNamesDecideMethNametestEqualityClassNametestEqualityMethNamedecideEqualityNametestCoercionClassNametestCoercionMethNamedecideCoercionName provedName disprovedNamereflName equalityName applySingNamesuppressClassNamesuppressMethodName thenCmpName sameKindNamefromIntegerName negateName errorName foldlName cmpEQName cmpLTName cmpGTName toEnumName fromEnumNameenumName equalsNameconstraintNameshowName showSName showCharName showParenName showSpaceName showsPrecNameshowStringName showSingName composeNamegtNameshowCommaSpaceNamefromStringName foldableName foldMapName memptyName mappendName foldrName functorNamefmapName replaceNametraversableName traverseNamepureNameapName liftA2NamemkTyName mkTyConName mkSingINamemkSingMethNameboolKi singFamilysingKindConstraintdemoteapplymkListE foldApplymkEqPredmodifyConNameDTypeTrueMaybeUniqIntDsMonad singInfixDeclsingReifiedInfixDeclsPromoteTypeOptionsptoCheckVanillaptoAllowWildcards promoteTypeLanguage.Haskell.TH.Desugar.ASTDTypepromoteType_NCdefaultPromoteTypeOptionspromoteType_optionspromoteTypeArg_NCpromoteUnraveledLetBindPrM allLocalsemitDecs emitDecsM lambdaBindletBind lookupVarE forallBindallBoundKindVarspromoteM promoteM_ promoteMDecsSgMbindLets bindContext askContext lookupConE wrapSingFun wrapUnSingFunsingM singDecsM singTypeKVBssingTypesingPred singPred_NC singPredRec DefunKindInfo DefunNoSAKDefunSAK defunInfodefunTopLevelTypeDeclsdefunAssociatedTypeFamiliesbuildDefunSymsbuildDefunSymsClosedTypeFamilyDbuildDefunSymsOpenTypeFamilyDbuildDefunSymsTypeFamilyHeadbuildDefunSymsTySynDbuildDefunSymsDataD defunReifydefunctionalizebuildTyFunArrowbuildTyFunArrow_maybe singDefuns singDataDsingCtorft_trivft_var ft_ty_app ft_bad_app ft_forallisInTypeFamilyAppfunctorLikeTraverse FFoldTypeFT DerivDescfunctorLikeValidityChecksdeepSubtypesContainingfoldDataConArgsgetDVarTName_maybe mkSimpleLam mkSimpleLam2mkSimpleConClauseisFunctorLikeClassNameinferConstraintsinferConstraintsDefmkDecideInstancemkTestInstance TestInstance TestCoercion TestEqualitymkDecideMethClausemkEmptyDecideMethClausemkTraversableInstanceparenInfixConNamemkShowSingContextGHC.ShowShowmkShowInstance mkOrdInstancemkFoldableInstanceReplacerreplace ImmediateNestedmkFunctorInstance mkEqInstancemkEnumInstancemkBoundedInstance partitionDecs GHC.ClassesOrdpartitionDerivingEqPartitionedDecspd_derived_show_decspd_derived_eq_decspd_closed_type_family_decspd_open_type_family_decspd_ty_syn_decs pd_data_decspd_instance_decs pd_class_decs pd_let_decsPDecs partitionDecpartitionClassDecpartitionInstanceDecisStockOrDefaultInstanceMethodsLetDecRHSKindInfoLDRKI LetDecRHSSort LetBindingRHSClassMethodRHS MethodSortDefaultMethodspromote'promoteInstance promoteInfo promoteDecspromoteLetDecspromoteDataDecspromoteDataDecpromoteClassDecpromoteInstanceDec promoteMethodpromoteLetDecEnvpromoteInfixDeclpromoteReifiedInfixDeclspromoteLetDecRHS promoteClause promoteMatch promotePat promoteExp promoteLitExp promoteLitPat mkSigPaCaseE singMatch singletons' singInstancesingInfosingTopLevelDecs buildDataLets buildMethLets singClassD singInstD singLetDecEnv singTySig singLetDecRHS singClausesingPatsingExpsingDerivedEqDecs sEqToSDecidesingDerivedShowDecs isExceptionsingLit Data.ProxyProxyData.Singletons@@FromSingSLambda2SLambda3SLambda4SLambda5SLambda6SLambda7SLambda8Singdemote1demote2sing1sing2 singByProxy singByProxy# singByProxy1 singByProxy1# singByProxy2 singByProxy2#singFun1singFun2singFun3singFun4singFun5singFun6singFun7singFun8singThat singThat1 singThat2 unSingFun1 unSingFun2 unSingFun3 unSingFun4 unSingFun5 unSingFun6 unSingFun7 unSingFun8 usingSingI1 usingSingI2withSing withSing1 withSing2 withSingI withSomeSing applySing2 applySing3 applySing4 applySing5 applySing6 applySing7 applySing8@@@#@$@@@#@$$@@@#@$$$Apply ApplySym0 ApplySym1 ApplySym2 ApplyTyConApplyTyConAux1ApplyTyConAux2 DemoteSym0 DemoteSym1KindOf KindOfSym0 KindOfSym1SLambda applySing SWrappedSing SWrapSing sUnwrapSingSameKind SameKindSym0 SameKindSym1 SameKindSym2 SingFunction1 SingFunction2 SingFunction3 SingFunction4 SingFunction5 SingFunction6 SingFunction7 SingFunction8SingIsingSingI1liftSingSingI2 liftSing2 SingInstanceSingKindtoSingDemotefromSingSomeSingTyConTyCon1TyCon2TyCon3TyCon4TyCon5TyCon6TyCon7TyCon8TyFun UnwrapSing WrappedSingWrapSing unwrapSing~>~>@#@$~>@#@$$~>@#@$$$