!Eym      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijkl (c) Tim Williams 2017-2019BSD3info@timphilipwilliams.com experimentalportableSafemnopqrstuvwxyz{|}~(c) Tim Williams 2017-2019BSD3info@timphilipwilliams.com experimentalportableSafe 12456>@AUVX expressoadd annotationexpressostrip annotationsexpressoretrieve annotationexpressofix with annotation(c) Tim Williams 2017-2019BSD3info@timphilipwilliams.com experimentalportableNone"#%2456=>?@AHMPUVg"rexpressoFree type variablesexpressoMeta type variablesexpresso&Replace meta type variables with typesexpressoA type synonym definition.expresso'Global map of type synonym definitions.expressoThe type environment.expresso8A simple hierarchy. i.e. Num has Ord and Eq, Ord has Eq.expresso\Type variable constraints e.g. for types of kind row, labels the associated tyvar must lackexpresso(Pattern functor for the syntax of types.expressoUnannotated type syntax.expresso+Type syntax annotated with source position.expresso$A string representing a unique name.expresso Row labelexpressoSource positionexpressoULookup and expand a type synonym. Returns Nothing if the lookup or expansion failed.expressoUsed by the REPL.expressoDChecks for duplicate synonym names, loops/cycles and free variables.'expressoA useless source position.expressozGet all the binders used in ForAlls in the type, so that when quantifying an outer forall, we can avoid these inner ones.expresso,apply s1 and then s2 NB: order is importantexpressoHTrue if the supplied type of kind Star satisfies the supplied constraintexpressoyunions constraints for kind Star: picks the most specific, i.e. max c1 c2 for kind Row: unions the sets of lacks labelsexpresso?Print with parens if precedence arg > precedence of type itselfs  !"#$%&'0(c) Tim Williams 2017-2019BSD3info@timphilipwilliams.com experimentalportableNone %456=?MPUVX+expressoLanguage primitives(expressoBinders,expressoVPattern functor representing expressions and parameterised with the type of variable v, type of binder b" and the type of type-annotation t.5expressoAn import file path.8expresso"Expressions with imports resolved.9expressoExpressions with imports.E      !"#(+*),43210/.-56789(c) Tim Williams 2017-2019BSD3info@timphilipwilliams.com experimentalportableNone4=>?MUV: :expresso'Internal state of the inference engine.$expresso#Type check the supplied expression.%expressoRun the type inference monad.&expresso&Initial state of the inference engine.'expresso:Quantify over the specified type variables (all flexible).(expressoSInstantiate the topmost foralls of the argument type with flexible type variables.)expressoUPerforms deep skolemisation, returning the skolem constants and the skolemised type.*expressoHin order to unify two meta type variables, we must unify any constraints+expressobind the row tyvar to the row type, as long as the row type does not contain the labels in the tyvar lacks constraint; and propagate these label constraints to the row variable in the row tail, if there is one.,expressotype-checking and inference-:$%&.(c) Tim Williams 2017-2019BSD3info@timphilipwilliams.com experimentalportableNone%>P</expresso3signature section (:T) becomes (x -> x : T -> T)0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijkl/mnopqrstuvwxyz{|}~(c) Tim Williams 2017-2019BSD3info@timphilipwilliams.com experimentalportableNoneC;expresso,Expresso Quasi-Quoter for type declarations.<expresso4Expresso Quasi-Quoter for type synonym declarations.expressoNfind the current location in the Haskell source file and convert it to parsec  SourcePos.;<;< (c) Tim Williams 2017-2019BSD3info@timphilipwilliams.com experimentalportableNone %=>?MSUVX_Y=expressoVA class of Haskell types that can be projected from or injected into Expresso values.@expressoType for an evaluated term.Jexpresso A potentially unevaluated value.MexpressoWA call-by-need environment. Using a HashMap makes it easy to support record wildcards.expressoThis does *not* evaluate deeplyexpressoThis evaluates deeplyNexpresso%Run the EvalM evaluation computation.expressoPartial variant of runEvalM.OexpressoeMake a strict Expresso lambda value (forced arguments) from a Haskell function (on Expresso values).PexpressoAs  mkStrictLam;, but accepts Haskell functions with two curried arguments.QexpressoAs  mkStrictLam=, but accepts Haskell functions with three curried arguments.expresso>Force (evaluate) thunk and then project out the Haskell value.expresso1Used for equality of records, sorts values by keyRexpressoThrow a type mismatch error.SexpressoKProject out a record field, fail with a type mismatch if it is not present.Texpresso;Pair up a field name and a value. Intended to be used with mkRecord or  mkVariant.UexpressoConvenience for implementing proj for a sum type.Vexpresso+Convenience constructor for a record value.Wexpresso,Convenience constructor for a variant value.XexpressoUnit value. Equivalent to () in Haskell.#=>?@ABCDEFGHIJKLMNOPQRSTUVWX(c) Tim Williams 2017-2019BSD3info@timphilipwilliams.com experimentalportableNone>PgvaYexpressoType and term environments.ZexpressoEmpty initial environments.[expressonInstall a binding using the supplied name, type and term. Useful for extending the set of built-in functions.\expressoDQuery the type of an expression using the supplied type environment.]expresso Query the type of an expression.^expresso'Parse an expression and query its type._expressoEEvaluate an expression using the supplied type and term environments.`expressoiEvaluate the contents of the supplied file path; and optionally validate using a supplied type (schema).aexpressoEvaluate the contents of the supplied file path; and optionally validate using a supplied type (schema). NOTE: This version also takes a term environment and a type environment so that foreign functions and their types can be installed respectively.bexpressoYParse an expression and evaluate it; optionally validate using a supplied type (schema).cexpressoParse an expression and evaluate it; optionally validate using a supplied type (schema). NOTE: This version also takes a term environment and a type environment so that foreign functions and their types can be installed respectively.dexpressoCAdd a validating type signature section to the supplied expression.eexpresso#Used by the REPL to bind variables.fexpressoPretty print the supplied type.gexpressoAPretty print the supplied value. This does *not* evaluate deeply.hexpresso7Pretty print the supplied value. This evaluates deeply.iexpresso"Extract type environment bindings.jexpresso;Set the library paths used when resolving relative imports.kexpresso/Install the supplied type synonym declarations.lexpresso2Used by the REPL, deletes any previous definition.k  !"#$%&'()*+,-./0123456789:=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklk()*+MY8,-./012349=>?567JKL:&%$#"!  @ABCDEFGHIe'`abc_Z[klNjfghi]^\dUVOPQWRXST      !"#$%&'()*+,-./0123456789:;<=>>?@ABCD E F G H I J K L M N O P Q R R S T U V W X Y Z [ \ ] ^ _`abcdefghijklmnopqrstuvtuwtuxtuytuztu{tu|tu}tu~tututututututututututututuFG      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefg^hijklmnopqrstuvwxyz{|}~}         l 'expresso-0.1.2.2-DrYLIXkEWCoGh9FfMC3fKSExpressoExpresso.TH.QQExpresso.PrettyExpresso.Utils Expresso.TypeExpresso.SyntaxExpresso.TypeCheckExpresso.Parser Expresso.Eval SynonymDecl synonymPos synonymName synonymParams synonymBodyTypeEnvTypeFTForAllFTVarF TMetaVarF TSynonymFTIntFTDblFTBoolFTCharFTTextFTFunFTListFTRecordF TVariantF TRowEmptyF TRowExtendFTypeName TRowExtend TRowEmptyTVariantTRecordTListTFunTTextTCharTBoolTDblTIntTMetaVarTVarTForAlldummyPosBindArgRecArg RecWildcardExpFEVarEPrimEAppELamEAnnLamELetEAnnLetEAnnImportunImportExpExpITIState expressoTypeexpressoTypeSynHasValueprojinjValueVLamVIntVDblVBoolVCharVTextVListVRecordVVariantThunkforceEnvrunEvalM mkStrictLam mkStrictLam2 mkStrictLam3 typeMismatch.:.=choicemkRecord mkVariantunit EnvironmentsinitEnvironmentsinstallBinding typeOfWithEnvtypeOf typeOfString evalWithEnvevalFile evalFile' evalString evalString'validatebindshowType showValue showValue' dumpTypeEnv setLibDirsinstallSynonymsuninstallSynonym&wl-pprint-1.2.1-B2XOms6uP6QA0zN4Z3QbbRText.PrettyPrint.Leijentextemptyindentdoubleintegerintstringdotspacecommabracketsanglesparensbracesdquotessquotes<+>vcathcathsepDoc bracketsList parensList bracesListsepBycatByrenderannotatestripAnngetAnnwithAnnView:+:InLInR:*:leftrightKunKFixunFixcatacataMparaana&&&***firstsecond showErrorftvmetaapplySynonyms StarHierarchy ConstraintType'LabelPos lookupSynonym deleteSynonyminsertSynonyms tyVarBndrs composeSubst satisfiesunionConstraintsppType' PrecedenceSubstunSubstTypes unSynonym unTypeEnvCNumCOrdCEqCStarCRowCNoneMetaTvmetaConstraint metaPrefix metaUniqueTyVartyvarConstraint tyvarPrefix tyvarName tyvarFlavourFlavourWildcardSkolemBoundUniqTauRhoSigmaTSynonym insertTypeEnv typeEnvToList substTyVar nullSubst|-> isInSubstremoveFromSubsttoList extractMetaTvlacks mkRowTyperowToMaptopPrecarrPrectcPrec atomicPrecprecTypeppType ppRowType ppRowLabelsppForAllppPosppStarConstraintPrimRelOpRLTERLTRGTERGTArithOpSubMulAddDiv VariantElim VariantEmbed VariantInjectAbsurdRecordRestrict RecordExtend RecordSelect RecordEmpty ListAppend ListUnconsListCons ListEmpty TextAppendUnpackPackBwdCompFwdCompFixPrimCondNegAbsCeilingFloorNEqOrAndRelPrim ArithPrim ErrorPrimTraceDblNotTextShowEqModDoubleBoolCharInt typeCheckrunTI initTIStatequantify instantiate skolemiseunifyConstraints varBindRowtcRhoTItcDecl mkSigSectionEntryUpdateExtendresolveImportsparsetopLevel pTopLevel pSynonymDeclpExp addTypeAnnotpExp'pImportpLetpLetDeclpLampAnnLampAnnBindpAtompSection pSigSectionpVarpPrimpCondpOpExppApppTermopTablepPrimFunbinaryprefixpSelectpNumberpBoolpCharpStringpBindpLetBind pFieldBindpRecord pRecordBodypDifferenceRecordmkDifferenceRecord pRecordEntry pRecordLabelpVariant pVariantEmbedpCase pCaseBodypCaseAlt pVariantLabelpList mkFieldBindmkImport mkIntegermkDoublemkCase mkCaseAltmkVariantEmbedmkLammkAnnLammkVarmkLet mkTertiaryOpmkBinOp mkUnaryOpmkRecordSelectmkRecordExtend mkRecordEmptymkRecordRestrict mkFieldPun mkListCons mkListEmptymkAppmkPrimwithPospTypeAnnpTypepType'pTForAll pConstraints pConstraintpStarConstraintpRowConstraintunboundTyVarCheck mkTForAllpTVar pTSynonympTIntpTDblpTBoolpTCharpTTextpTFunpTConpTyVar pTWildcardmkTyVarpTRecord pTVariant pTRowBody mkFromRowType pTRecordEntrypTVariantEntry mkTRowExtend mkTRowEmptypTList languageDeflexerlowerIdentifierupperIdentifier identifierreservedoperator reservedOp charLiteral stringLiteralnaturalOrFloatsymbollexeme whiteSpacesemicolonsemiSepsemiSep1commaSep commaSep1 location'ppValueppValue' runEvalM'proj' recordValuesEvalMmkThunkeval insertEnv