pPaK      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJNone;<Token type, used to communicate between the lexer and parser+The cursor's location while lexing the textFConvert a text representation of an expression into a stream of tokensT keeps track of position and returns the remainder of the input if lexing fails.LKLMNOPQRSTUVWXY Z[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  ,KNMLORQPSWVUTXY Z[\]^_`abcdefghijklmnopqrstuvwxyz{|}~None+-./HM-A structured type error that includes contextThe specific type error $Bound variable names and their types0Variable names may appear more than once in the  . The 1 x@n refers to the nth occurrence of x in the   (using 0-based numbering).!Syntax tree for expressions" Import path ~ #path# App f a ~ f a$ =Pi x A B ~ "(x : A) ! B Pi unused A B ~ A ! B% Lam x A b ~ (x : A) ! b& )Var (V x 0) ~ x Var (V x n) ~ x@n' Const c ~ c(Like , except with an 0 instance in order to avoid orphan instances+Path to an external resource.+Constants for the calculus of constructionsThe only axiom is: " * : %&... and all four rule pairs are valid: /" * ! * : * " % ! * : * " * ! % : % " % ! % : %1Label for a bound variableThe % field is the variable's name (i.e. "x").The ! field disambiguates variables with the same name if there are multiple bound variables of the same name in scope. Zero refers to the nearest bound variable and the index increases by one for each bound variable of the same name going outward. The following diagram may help: @ +-refers to-+ | | v | \(x : *) -> \(y : *) -> \(x : *) -> x@0 +-------------refers to-------------+ | | v | \(x : *) -> \(y : *) -> \(x : *) -> x@1This _ behaves like a De Bruijn index in the special case where all variables have the same name.+You can optionally omit the index if it is 0:  +refers to+ | | v | \(x : *) -> \(y : *) -> \(x : *) -> x.Zero indices are omitted when pretty-printing 16s and non-zero indices appear as a numeric suffix.;Substitute all occurrences of a variable with an expression subst x n C B ~ B[x@n := C]3 shift n x adds n* to the index of all free variables named x within an !4yType-check an expression and return the expression's type if type-checking suceeds or an error if type-checking fails4 does not necessarily normalize the type since full normalization is not necessary for just type-checking. If you actually care about the returned type then you may want to 6 it afterwards.55 is the same as 4 with an empty context, meaning that the expression must be closed (i.e. no free variables), otherwise type-checking will fail.-Reduce an expression to weak-head normal form3Returns whether a variable is free in an expression6]Reduce an expression to its normal form, performing both beta reduction and eta reduction6 does not type-check the expression. You may want to type-check expressions before normalizing them since normalization can convert an ill-typed expression into a well-typed expression.7Pretty-print a value-Generates a syntactically valid Morte programG !"#$%&'()*+,-./01234567$ !"#$%&'()*+,-./01234567$12.0/+-,()*!'&%$#" 456370 !'&%$#"()*+-,.0/1234567None" *+-./02345689:;<=?BCDFGHJKM8"Structured type for parsing errors<The specific parsing error=+Parsing failed, returning the invalid token>2Lexing failed, returning the remainder of the text? Parse an ! from  or return a 8 if parsing failsi89:;<=>? 89:;<=>??89:;<>=`89:;<>=?   None+ @6Extend another exception with the current import stackB)Imports resolved so far, in reverse orderCThe nested exceptionDMorte tries to ensure that all expressions hosted on network endpoints are weakly referentially transparent, meaning roughly that any two clients will compile the exact same result given the same URL.To be precise, a strong interpretaton of referential transparency means that if you compiled a URL you could replace the expression hosted at that URL with the compiled result. Let's term this "static linking". Morte (very intentionally) does not satisfy this stronger interpretation of referential transparency since "statically linking" an expression (i.e. permanently resolving all imports) means that the expression will no longer update if its dependencies change.`In general, either interpretation of referential transparency is not enforceable in a networked context since one can easily violate referential transparency with a custom DNS, but Morte can still try to guard against common unintentional violations. To do this, Morte enforces that a non-local import may not reference a local import.Local imports are defined as:A fileA URL with a host of  localhost or  127.0.0.1-All other imports are defined to be non-localFThe offending opaque importG*An import failed because of a cycle importIThe offending cyclic import Load a +: as a "dynamic" expression (without resolving any imports) Load a +5 as a "static" expression (with all imports resolved)J(Resolve all imports within an expression  @ABCDEFGHI  J @ABCDEFGHIJ JGHIDEF@ABC  @ABCDEFGHI  JNone      !"#$%&'()*+,-../0  -,1234567789:;<=>>?@AABCCDEFGFHIJIKLMNOPQRSSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      morte-1.2.0 Morte.Lexer Morte.Core Morte.Parser Morte.Import Data.VoidVoidMorte.TutorialTokenEOFURLFileNumberLabelPiLambdaArrowBoxStarAtColon CloseParen OpenParenPositionPlineNocolumnNolexExpr TypeErrorcontextcurrent typeMessage TypeMessageUntyped TypeMismatch NotAFunctionInvalidOutputTypeInvalidInputTypeUnboundVariableContextExprImportAppLamVarConstXabsurdPathVshifttypeWithtypeOf normalizepretty ParseErrorposition parseMessage ParseMessageParsingLexing exprFromTextImported importStacknestedReferentiallyOpaque opaqueImportCycle cyclicImportloadAlexAcc AlexAccSkip AlexAccNone AlexLastAcc AlexLastSkipAlexNone AlexReturn AlexTokenAlexSkip AlexErrorAlexEOFAlexAddrAlexA# AlexInputprevChar currBytes currInput alex_base alex_table alex_check alex_deflt alex_accepttoInttoUrltoFileencodelinecolumn alexGetBytealexInputPrevChar alex_action_1 alex_action_3 alex_action_4 alex_action_5 alex_action_6 alex_action_7 alex_action_8 alex_action_9alex_action_10alex_action_11alex_action_12alex_action_13alex_action_14alex_action_15alex_action_16alexIndexInt16OffAddralexIndexInt32OffAddr quickIndexalexScan alexScanUser alex_scan_tkniUnbox$fFunctorAlexLastAccdeepseq-1.3.0.2Control.DeepSeqNFData text-1.2.0.4Data.Text.Internal.LazyTextghc-prim GHC.TypesIntsubstwhnffreeIn$fBuildableExprputUtf8getUtf8axiomrulelookupN lookupCtxmatch$fBuildableTypeError$fNFDataTypeError$fExceptionTypeError$fShowTypeError$fBuildableTypeMessage$fNFDataTypeMessage $fNFDataExpr$fIsStringExpr $fBinaryExpr$fEqExpr $fMonadExpr$fApplicativeExpr $fBuildableX $fNFDataX$fShowX$fEqX$fBuildablePath$fBuildableConst $fNFDataConst $fBinaryConst$fBuildableVar $fNFDataVar $fIsStringVar $fBinaryVar HappyAddrHappyA#HappyStk Happy_IntList HappyConsLexStatusHappyAny HappyAbsSynhappyIn4 happyOut4happyIn5 happyOut5happyIn6 happyOut6happyIn7 happyOut7happyIn8 happyOut8 happyInTok happyOutTokhappyActOffsetshappyGotoOffsetshappyDefActions happyCheck happyTablehappyReduceArr happy_n_termshappy_n_nonterms happyReduce_1happyReduction_1 happyReduce_2happyReduction_2 happyReduce_3happyReduction_3 happyReduce_4happyReduction_4 happyReduce_5happyReduction_5 happyReduce_6happyReduction_6 happyReduce_7happyReduction_7 happyReduce_8happyReduction_8 happyReduce_9happyReduction_9happyReduce_10happyReduction_10happyReduce_11happyReduction_11happyReduce_12happyReduction_12happyReduce_13happyReduction_13happyReduce_14happyReduction_14happyReduce_15happyReduction_15 happyNewToken happyError_ happyThen happyReturn happyThen1 happyReturn1 happyError' parseExprhappySeq generalizelexer parseError happyParse happyAccept happyDoActionindexShortOffAddr happyShifthappySpecReduce_0happySpecReduce_1happySpecReduce_2happySpecReduce_3 happyReducehappyMonadReducehappyMonad2Reduce happyDrop happyDropStk happyGoto happyFail notHappyAtAll happyTcHack happyDoSeq happyDontSeq$fBuildableParseError$fExceptionParseError$fShowParseError$fErrorParseMessage loadDynamic loadStatic_stack_cache_managerbuilderToStringstackcachemanager needManager$fShowImported$fExceptionImported$fShowReferentiallyOpaque$fExceptionReferentiallyOpaque $fShowCycle$fExceptionCycle