h^wP      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNONone<<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.PPQRSTUVWXYZ[\]^ _`abcdefghijklmnopqrstuvwxyz{|}~  -PQRSTUVWXYZ[\]^ _`abcdefghijklmnopqrstuvwxyz{|}~None+-./IN-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 5 x@n refers to the nth occurrence of x in the $ (using 0-based numbering).%Syntax tree for expressions& Const c ~ c' )Var (V x 0) ~ x Var (V x n) ~ x@n( Lam x A b ~ (x : A) ! b) =Pi x A B ~ "(x : A) ! B Pi unused A B ~ A ! B* App f a ~ f a+ Embed path ~ #path,Like , except with an 0 instance in order to avoid orphan instances/Path to an external resource2+Constants for the calculus of constructionsThe only axiom is: " * : %&... and all four rule pairs are valid: /" * ! * : * " % ! * : * " * ! % : % " % ! % : %5Label 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 56s and non-zero indices appear as a numeric suffix.7;Substitute all occurrences of a variable with an expression subst x n C B ~ B[x@n := C]8 shift n x adds n* to the index of all free variables named x within an %9yType-check an expression and return the expression's type if type-checking suceeds or an error if type-checking fails9 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 ; it afterwards.:: is the same as 9 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 expression;]Reduce an expression to its normal form, performing both beta reduction and eta reduction; 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.<Pretty-print a value-Generates a syntactically valid Morte programH !"#$%&'()*+,-./0123456789:;<% !"#$%&'()*+,-./0123456789:;<%56234/01,-.%&'()*+$9:;87< !"#1 !"#$%&'()*+,-./0123456789:;<None+D="Structured type for parsing errorsAThe specific parsing errorB2Lexing failed, returning the remainder of the textCCParsing failed, returning the invalid token and the expected tokensD Parse an % from  or return a = if parsing fails=>?@ABCD=>?@ABCDD=>?@ABC =>?@ABCDNone+ E6Extend another exception with the current import stackG)Imports resolved so far, in reverse orderHThe nested exceptionIMorte 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-localKThe offending opaque importL*An import failed because of a cycle importNThe offending cyclic importLoad a /: as a "dynamic" expression (without resolving any imports)Load a /5 as a "static" expression (with all imports resolved)O(Resolve all imports within an expressionEFGHIJKLMNO EFGHIJKLMNO OLMNIJKEFGHEFGHIJKLMNONone      !"#$%&'()*+,-./01123, -456789:;;<=>?@AABCDDEFFGHIJIKLMLNOPQRSTUVVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~morte_3mZ6qXT0YFoGHeyMQ1Tw2e Morte.Lexer Morte.Core Morte.Parser Morte.Import Data.VoidVoidMorte.TutorialToken OpenParen CloseParenColonAtStarBoxArrowLambdaPiLabelNumberFileURLEOF LocatedTokentokenpositionPositionPlineNocolumnNolexExpr TypeErrorcontextcurrent typeMessage TypeMessageUnboundVariableInvalidInputTypeInvalidOutputType NotAFunction TypeMismatchUntypedContextExprConstVarLamAppEmbedXabsurdPathVsubstshifttypeWithtypeOf normalizepretty ParseError parseMessage ParseMessageLexingParsing exprFromTextImported importStacknestedReferentiallyOpaque opaqueImportCycle cyclicImportloadAlexAcc AlexAccNone AlexAccSkip AlexLastAccAlexNone AlexLastSkip AlexReturnAlexEOF AlexErrorAlexSkip AlexTokenAlexAddrAlexA# 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$fFunctorAlexLastAccdeeps_LbCWUlehDDeLxurARKDH5oControl.DeepSeqNFDatatext_BKzOMwCPkuv5n8xwLM3CQGData.Text.Internal.LazyTextghc-prim GHC.TypesIntwhnffreeIn$fBuildableExprputUtf8getUtf8axiomrulelookupN lookupCtxmatch$fBuildableTypeError$fNFDataTypeError$fExceptionTypeError$fShowTypeError$fBuildableTypeMessage$fNFDataTypeMessage $fNFDataExpr$fIsStringExpr $fBinaryExpr$fEqExpr $fMonadExpr$fApplicativeExpr $fBinaryX $fBuildableX $fNFDataX$fShowX$fEqX$fBuildablePath$fBuildableConst $fNFDataConst $fBinaryConst$fBuildableVar $fNFDataVar $fIsStringVar $fBinaryVarlabelnumberfileurlexpr$fBuildableParseError$fExceptionParseError$fShowParseError loadDynamic loadStaticStatus_stack_cache_managerbuilderToStringstackcachemanager needManager$fShowImported$fExceptionImported$fShowReferentiallyOpaque$fExceptionReferentiallyOpaque $fShowCycle$fExceptionCycle