%~5      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~       !"#$%&'()*+,-./01234SafeO+5Command line config.6Command line mode.7Parse command-line arguments. 5896:;<=>7?5896=<;:SafeO@ASafeO'!Index of a nominal constant.Generic names for things.#A reference to some external thing.An uninterpreted symbol.A primitive value. A macro name. A set name.A nominal variable. Bump index indicator. Binding depth indicator. .Indicates how to bump the index on a variable. QLifting indicator, mapping name and binding depth to number of levels to lift.YExplicit substitution map, parameterised by the types used for symbols and primitives._A car on the substitution train, parameterised by the types used for symbols and primitives.Simultaneous subsitution.Recursive substitution.Lifting."Expression keys (super primitives)bDelay evaluation of an expression used as the argument of a call-by-value function application.Run a boxed expression.)Form of argument required in application.Value for call-by-value.Expression for call-by-nameFunction parameter.Substitution train. CExpression, parameterised by the types of symbols and primitives!Reference to an external thing."Keyed expressions.#4Application of a function expression to an argument.$#Variable name with a depth counter.%<Abstraction with a list of parameters and a body expression.&gSubstitution train applied to an expression. The train car at the head of the list is applied first.'OTop-level declaration, parameterised by the types of symbols and primitives.)  &%$#"!')(    !"#$%&'()SafeO/z*{Make an application of a function to the given list of arguments, suppressing the application of there are no arguments.+jTake an application of a function to a list of arguments. TODO(BL): fix rubbish list append complexity.,PMake an abstraction, short circuiting to the body if there are no parameters.-%Get the name of a function parameter...Get the argument form required by a parameter.*+,-.SafeHOEC/-Cons a car on the front of an existing train..If the new car is empty it will be suppressed.dIf the new car can be combined with the first car on the existing train then it will be combined.0Append two trains.BVBump a train due to pushing it under an abstraction with the given parameter names.1KWrap an expression in a substitution train. If the expression is a plainC<Apply a train to a named variable of a given name and depth.D5Apply a train to a nominal variable of a given index.E%Check if a substitution car is empty.27Build a substitution from lists of names and arguments.F)Check if the given substitution is empty.G]Bump a substitution due to pushing it under an abstraction with the given parameter names.3VWrap a train consisting of a single simultaneous substitution around an expression.H=Apply a substitution to a variable of a given name and depth.I>Apply a substitution to a nominal variable of the given index.J Check if the given ups is empty.K9Wrap an expression in a train consisting of a single ups.LApply an ups to a variable.MfBump ups (substitution lifting) due to pushing it under an absraction with the given named binders.NCombine two lists of ups.OCombine a bump with an existing list of them. Applying the result to an expression will achieve the same result as applying the whole list and then the extra one./0B1CDE2FG3HIJKLMNOSafeOJ4JPush down any outermost substitution train to reveal the head constructor.5CPush down the left-most substitution train in an expression, or P if there isn't one.Q8Push down the first substiution train in the given list.RTPush a substitution train down into an expression to reveal the head constructor.45QRSafeOK6  !"#$%&'()*+,-./0123456'() !"#$%&  *+,-./013245SafeON6World state for evaluation8 Generator for nominal variables.9 User state:Initialize a new world.6798:6789:6789SafeOU;jAn unordered collection of things. O(1) to add a single element, a list of elements, or union two bags.@O(1). Construct an empty bag.A2O(1). Construct a bag containing a single element.B4O(1). Construct a bag containing a list of elements.CO(1). Union two bags.DoO(n). Convert a bag to a list. The elements come out in some deterministic but arbitrary order, no promises.E.Apply a function to all the elements in a bag. ;?>=<@ABCDE ;<=>?@ABCDE;<=>?SafeO[8G4A thing located at the given range in a source file.ILocation in a source file.K(Take the start point of a located thing.L&Take the end point of a located thing.M"Take the value of a located thing.N4Increment the character position of a located thing.O/Increment the line position of a located thing. GHIJKLMNO IJGHKLMNOGHIJSafeOcRPrimitive evaluator.TOp name.UOp description.VArgument passing methods.WEvaluation function.XPrimitive values and operators.^=Take the first expression argument from a list of primitives._'Take a literal Bool from an expression.`Make a literal Bool expression.a+Split a literal Bool from an argument list.b&Take a literal Nat from an expression.cMake a literal Nat expression.d*Split a literal Nat from an argument list.eMake a list of expressions.RSTUVWXYZ[\]^_`abcdeXYZ[\]RSTUVW^`_acbdeRSTUVWXYZ[\]SafeOesi"Pretty print a primitive operator.j,Parse a primitive name, without the leading #.ijijSafeOs kResult of evaluation.nEvaluation configp!Reduce under lambda abstractions.q1Reduce arguments when head is not an abstraction.r Primitive operator declarations.sMacro declarations.t$Multi-step reduction to normal form.uSingle step reduction.LThis is a definitional interpreter, intended to be easy to understand and get right, but not fast. Each time we take a step we decend into the AST looking for the next redex, which causes evaluation to have a higher asymptotic complexity than it would with an evaluator that that manages the evaluation context properly.S>Step an application of a primitive operators to its arguments.T?Step an application of an abstraction applied to its arguments.U>Step an application of a primitive operator to some arguments.VSStep the first available expression in a list, reducing them all towards values.W.Step the first available expression in a list. klmnopqrstu nopqrsklmtuklmnopqrsNoneO~ wICompute the size of a serialized shimmer file containing the given decls.x3Compute the serialized size of a given declaration.y4Compute the serialized size of the given expression.z+Compute the serialized size of a parameter.{2Compute the serialized size of a substitution car.|3Compute the serialized size of a substitution bind.}/Compute the serialized size of an lifting bump.~3Compute the serialized size of the given reference.-Compute the serialized size of a text string..Compute the serialized size of a bump bounter..Compute the serialized size of a nominal atom.4Compute the serialized size of a sequence of things. wxyz{|}~ wx~yz{|} None)O5Poke a list of ', into memory, including the SMR file header.Poke a ' into memory.Poke an   into memory.Poke a  into memory.Poke a  into memory.Poke a  into memory.Poke an  into memory.Poke an   into memory.Poke a  into memory.Peek a  from memory.Poke a   into memory.Poke a  into memory.XPoke a prim into memory.Y7Poke a list of things into memory, including size info.Z1Poke a text value into memory as UTF8 characters.Poke a [ into memory.Poke a \$ into memory, in network byte order.Poke a ]$ into memory, in network byte order.Poke a ^$ into memory, in network byte order. NoneOVPeek a list of ', from memory, including the SMR file header.Peek a ' from memory.Peek an   from memory.Peek a  from memory.Peek a  from memory.Peek a  from memory.Peek an  from memory.Peek an   from memory.Peek a  from memory.Peek a  from memory.Peek a   counter from memory.Peek a  from memory._Peek a prim from memory.`"Peek a list of things from memory.a1Peek a text value from memory as UTF8 characters.Peek a [7 from memory, in network byte order, with bounds check.bPeek a [: from memory, in network byte order, with no bounds check.Peek a \7 from memory, in network byte order, with bounds check.cPeek a \9 from memory, in network byte order, with no bound check.Peek a ]7 from memory, in network byte order, with bounds check.dPeek a ]: from memory, in network byte order, with no bounds check.Peek a ^7 from memory, in network byte order, with bounds check.ePeek a ^; from memory, in network byte order, in network byte order. SafeOa+Primitive evaluators for boolean operators.1Construct an evaluator for 1-arity bool operator.1Construct an evaluator for 2-arity bool operator.hPrimitive evaluator for the #if operator. Only the scrutinee is demanded, while the branches are not. SafeOi(Primitive evaluators for list operators.)Cons an element to a the front of a list.*Split an element from the front of a list.'Snoc an element to a the end of a list.)Unsnoc an element from the end of a list.Append two lists. SafeHO5Primitive matching operators.Match against a given symbol.<Match an application. TODO(BL: pack the args into a list)'Match all parameters of an abstraction.,Match the first parameter of an abstraction.SafeO]'Primitive evaluators for nat operators.@Construct an evaluator for a 2-arity nat operator returning nat.AConstruct an evaluator for a 2-arity nat operator returning bool.SafeO2Primitive evalutor for nominal variable operators.,Check for equality of two nominal variables."Allocate a fresh nominal variable.5Create a closing substitution for a nominal variable.SafeOM)Primitive evaluator for symbol operators.Check equality of two symbols.SafeOSafeO9Describes why the parser could not make further progress.'Remaining input tokens where we failed.&Description of what we were expecting.Result of a parser, parameterised by (t) the type of tokens, (e) the type for decriptions of what we're expecting to parse. (a) type of value to parse.Parser failed after consuming no input. The parser looked at one or more tokens at the front of the input but based on these the input does not look like whatever syntax the parser was supposed to parse.Parser yielding a value after consuming no input. The parser returned a value without looking at any tokens, this is a pure value returning action.Parse failed after partially consuming input. The parser thought that the input sequence looked like what it was supposed to parse, but complete parsing failed once it had committed.yParse succeeded yielding a value after consuming input. We have a complete value, and have consumed some input tokens.Parser is a function that takes a list of tokens, and returns a list of remaining tokens along with (on error) a list of descriptions of expected input, (on success) a parsed value.)Apply a parser to a list of input tokens.GAlways fail, producing no possible parses and no helpful error message.EAlways fail, yielding the given message describing what was expected.pCommit to the given parser, so if it skips or returns without consuming any input then treat that as failure. Parse in an expectation context.RIf the given parser suceeds then enter an expectation context for the next one.7Peek at the first input token, without consuming at it.;Consume the first input token, failing if there aren't any.~Consume the first input token if it matches the given predicate, failing without consuming if the predicate does not match.|Consume the first input token if it is accepted by the given match function. Fail without consuming if there is no match.pGiven two parsers, try the first and if it succeeds produce the output of that parser, if not try the second.Like 1 but take a list of parser, trying them in order.;Parse zero or more things, yielding a list of those things.:Parse one or more things, yielding a list of those things.,Parse some things separated by other things.3Parse at least one thing separated by other things.8Run a parser, peeking at the starting and ending tokens.SafeO0Context we're currently in when pretty printing.Top level context.+Functional expression in an an application.&Argument expression in an application.7Class of things that can be converted to text builders.Wrap a thing in parenthesis."Yield a builder for a declaration."Yield a builder for an expression. Yield a builder for a parameter.Yield a builder for a keyword.Yield a builder for a train. Yield a builder for a train car.#Yield a builder for a substitution.+Yield a builder for a substitution binding.Yield a builder for an ups. Yield a builder for an ups bump. Yield a builder for a reference. Yield a builder for a primitive.SafeOName space of a name.Local variable. Macro name. Symbol name. Set name.Primitive name.Keyword (super primitive) Nominal name.#Tokens for for the source language. End of input.Punctuation character.A scoped name.A natural number.+Check if a token is equal to the give none.8Check is token is punctuation using the given character.#Take the name from a token, if any.#Take the name from a token, if any.-Take the natural number from a token, if any.SafeO Lex a sequence of tokens.fLex a single token.gLex a variable name.hLex a natural number.i6Take the namespace qualifier from the front of a name.j9Check if this character can appear in the body of a name.k)Check if this is a punctuation character.GHIJ  GHIJSafeO   Parser error.<What we were expecting at the point there was a parse error.Expecting end of input.(Expecting a name in the given namespace."Expecting a name in any namespace.Expecting a natural number."Expecting a punctuation character.3Expecting something described by the given message.0Expecting something while parsing a declaration.,Expecting something while parsing a binding.Pretty print an expected thing.Pretty print a blocker.Pretty print a parser error.      SafeO#:Parse a complete expression from the given list of tokens.'Parser for an application.( Parser for an atomic expression.) Parser for a function parameter.*KParser for a substitution train. The cars are produced in reverse order.+ Parse a single car in the train.,&Parser for a substitution environment.Snv ::= '[' Bind*, ']'-Parser for a binding.Bind ::= Name '=' Exp | Name l Nat '=' Exp.Parser for an ups.Ups ::= '{' Bump*, '}'/Parser for a bump.Bump ::= Name : Nat | Name l Nat : Nat0Parser for a natural number.1%Parser for a name in the given space.2Parser for a name of any space.3"Parser for the end of input token.4#Parser for a punctuation character. !"#$%&'()*+,-./01234! "#$%&'()*+,-./01234 NoneOmLoad decls from the given file.mNoneOnCurrent interpreter mode.o0Top-level declarations parsed from source files.pWorking source files.qExecution world.rMain repl loop dispatchersQuit the repl.tDisplay the help page.uDisplay the language grammar.vDisplay the list of primops.w)Display the list of current declarations.xReload the current source file.y#Parse and print back an expression.z0Parse an expression and push down substitutions.{Advance the train pusher.|'Parse an expression and single-step it.}Advance the single stepper.~%Parse an expression and normalize it.Advance the evaluator stepper.NParse an expression and normalize it, printing out each intermediate state.Advance the evaluator stepper.&qponrstuvwxyz{|}~nopq !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXXYZ[\]^_`abcdefghijklmnopqrsstuvwxyz{|}~       !"#$%&'())*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnop q r sgtugtvgtwgtx y z { | } ~ gNT$shimmer-0.1.1-5EpS6TXa05D6CVZS9CQ0PG SMR.Core.ExpSMR.Core.World SMR.Data.BagSMR.Data.LocatedSMR.Prim.Op.Base SMR.Prim.Name SMR.Core.StepSMR.Codec.SizeSMR.Codec.PokeSMR.Codec.PeekSMR.Prim.Op.BoolSMR.Prim.Op.ListSMR.Prim.Op.MatchSMR.Prim.Op.NatSMR.Prim.Op.NomSMR.Prim.Op.Sym SMR.Prim.OpSMR.Source.ParsecSMR.Source.PrettySMR.Source.TokenSMR.Source.LexerSMR.Source.ExpectedSMR.Source.ParserSMR.CLI.Config SMR.CLI.HelpSMR.Core.Exp.BaseSMR.Core.Exp.CompoundsSMR.Core.Exp.TrainSMR.Core.Exp.PushSMR.CLI.Driver.Load SMR.CLI.Repl#text-1.2.2.2-EakMpasry3jA6OIwSZhq9MData.Text.InternalTextNomNameRefRSymRPrmRMacRSetRNomBumpDepthUpsBumpUpsUUpsSnvBindBindVarBindNomSnvSSnvCarCSimCRecCUpsKeyKBoxKRunFormPValPExpParamPParamTrainExpXRefXKeyXAppXVarXAbsXSubDeclDeclMacDeclSet makeXApps takeXAppsmakeXAbs nameOfParam formOfParam trainCons trainAppend trainApplysnvOfNamesArgssnvApplypushHeadpushDeepWorld worldNomGen worldUser worldInitBagBagNilBagElemBagListBagUnionnil singletonlistuniontoListmap $fShowBagLocatedLLLocationLstartOfLocated endOfLocatedvalueOfLocatedincCharOfLocationincLineOfLocation$fShowLocation $fShowLocatedPrimEval primEvalName primEvalDesc primEvalForm primEvalFunPrimPrimOp PrimLitBool PrimLitNat PrimTagUnit PrimTagList takeArgExp takeXBool makeXBool takeArgBooltakeXNatmakeXNat takeArgNat makeXList$fEqPrim $fOrdPrim $fShowPrimpprPrimreadPrimResult ResultDone ResultErrorConfigconfigUnderLambdasconfigHeadArgs configPrimsconfigDeclsMacstepsstep $fShowResult sizeOfFile sizeOfDecl sizeOfExp sizeOfParam sizeOfCar sizeOfSnvBind sizeOfUpsBump sizeOfRef sizeOfName sizeOfBump sizeOfNom sizeOfSeq pokeFileDeclspokeDeclpokeExppokeKey pokeParampokeCar pokeSnvBind pokeUpsBumppokeRefpokeNamepokeBumppokeNom pokeWord8 pokeWord16 pokeWord32 pokeWord64 peekFileDeclspeekDeclpeekExppeekKey peekParampeekCar peekSnvBind peekUpsBumppeekRefpeekNamepeekBumppeekNom peekWord8 peekWord16 peekWord32 peekWord64 primOpsBool primOpBool1 primOpBool2primOpIf primOpsListprimOpListConsprimOpListUnconsprimOpListSnocprimOpListUnsnocprimOpListAppend primOpsMatchprimOpMatchSymprimOpMatchAppprimOpMatchAbsprimOpMatchAbs1Nat primOpsNat primOpNat2NatprimOpNat2Bool primOpsNom primOpNomEqprimOpNomFreshprimOpNomClose primOpsSym primOpSymEq primEvalsprimOpTextNamesBlocker blockerTokensblockerExpected ParseResult ParseSkip ParseReturn ParseFailure ParseSuccessParserparsefailexpectedcommitenterenterOnpeekitem satisfiesfromaltaltssomemanysepBysepBy1 withDelims $fMonadParser$fApplicativeParser$fFunctorParser $fShowBlocker$fShowParseResultCtxCtxTopCtxFunCtxArgBuildbuildparens buildDeclbuildExp buildParambuildKey buildTrainbuildCarbuildSnv buildSnvBindbuildUps buildUpsBumpbuildRef buildPrim $fBuildPrim $fBuildText $fShowCtxSpaceSVarSMacSSymSSetSPrmSKeySNomTokenKEndKPuncKNameKNatisTokenisKPunctakeNameOfTokentakeAnyNameOfTokentakeNatOfToken $fShowSpace $fEqSpace $fShowToken $fEqToken lexTokens ParseErrorExpected ExBaseEnd ExBaseNameOf ExBaseNameAny ExBaseNat ExBasePunc ExBaseMsg ExContextDecl ExContextBind pprExpected pprBlocker pprLocation pprParseError$fShowExpected$fShowParseError configReadSym configReadPrm parseDeclsparseExppDeclspDeclpExppExpApppExpAtompParampTrain pTrainCar pCarSimRecpBindpUpspBumppNat pNameOfSpacepNamepEndpPuncMode parseArgs configMode ModeConvertModeREPL ModeCheckModeNone configZerousage helpCommands helpGrammar trainBump trainApplyVar trainApplyNom carIsEmpty snvIsEmptysnvBump snvApplyVar snvApplyNom upsIsEmptyupsApply upsApplyVarupsBump upsCombineupsCombineBumpbaseGHC.BaseNothing pushDeepFirst pushTrain stepAppPrm stepAppAbsstepPrim stepFirstVal stepFirstpokePrimpokeListpokeTextGHC.WordWord8Word16Word32Word64peekPrimpeekListpeekText peekWord8' peekWord16' peekWord32' peekWord64'lexTokenlexNamelexNat takeSpaceisNameBodyChar isCharPuncGHC.Real^runLoadFileDecls stateMode stateDecls stateFiles stateWorldreplLoopreplQuitreplHelp replGrammar replPrims replDecls replReload replParsereplPush replPush_nextreplStep replStep_next replStepsreplSteps_next replTracereplTrace_nextRExpRDeclRWorldRConfigRStateStateModeStepModePush ModeParse replStartshowFormleftPad printDecl replLoadExp replParseExp