!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ (C) 2015 Richard EisenbergBSD-style (see LICENSE)'Richard Eisenberg (rae@cs.brynmawr.edu) experimentalSafe%&+DQR 0More perspicuous synonym for operator precedenceLike !Precedence for top-level printing Convert a  to a  Convert a  to a  for further rendering Enclose a  in parens if the flag is  Synonym for  /(Inefficiently) strips whitespace from a string NPluck out the nth item from a list, or use a default if the list is too short      (C) 2015 Richard EisenbergBSD-style (see LICENSE)'Richard Eisenberg (rae@cs.brynmawr.edu) experimentalSafe %&+,9;DOQRT Singleton for a typing context An implicit ", wrapped up in a class constraintSingleton for a glambda type Representation of a glambda typeA function type>Perhaps convert a string representation of a base type into a #The singleton for the empty context Convert a  into an . Convert an  into a  Compare two s for equality.  !"#     !"#511(C) 2015 Richard EisenbergBSD-style (see LICENSE)'Richard Eisenberg (rae@cs.brynmawr.edu) experimentalSafe%&,/L %0A lexed token with location information attached' A lexed token88 ("unchecked :%") is an existential package for an ::An  ArithOp ty; is an operator on numbers that produces a result of type tyO Compare two :/s (potentially of different types) for equalityPPerhaps extract a 8QPerhaps extract an RPerhaps extract an SPerhaps extract a T$Remove location information from an %?%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^0%&'7/01,.()*+-2345689:;<=>?@ABCDEFGHIJKLMNOPQRST0:;<=>?@ABCD89OEFGHIJKLMN'()*+,-./01234567%&TPQRS#%&'()*+,-./0123456789: ;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^(C) 2015 Richard EisenbergBSD-style (see LICENSE)'Richard Eisenberg (rae@cs.brynmawr.edu) experimentalSafe$%&9; `2A class for expressions that can be pretty-printedb;Information about coloring in de Bruijn indexes and bindersMa stream of remaining colors to use, and the colors used for bound variablesA function that changes a s color2Returns (overall, left, right) precedences for an :cA b for an empty contextdConvenient implementation of ePrint a variablefPrint a lambda expressiongPrint an applicationhPrint an arithemtic expressioniPrint a conditionaljPrint a fix`abcdefghij `abcdefghij `adbcefghij`abcdefghij(C) 2015 Richard EisenbergBSD-style (see LICENSE)'Richard Eisenberg (rae@cs.brynmawr.edu) experimentalSafekUnchecked expressionlde Bruijn index for a variable klmnopqrstuv klmnopqrst klmnopqrstk lmnopqrstuv(C) 2015 Richard EisenbergBSD-style (see LICENSE)'Richard Eisenberg (rae@cs.brynmawr.edu) experimentalSafewmA statement can either be a bare expression, which will be evaluated, or an assignment to a global variable.wxyzwxywxywxyz(C) 2015 Richard EisenbergBSD-style (see LICENSE)'Richard Eisenberg (rae@cs.brynmawr.edu) experimentalSafe %&+,DQRT{:Classifies types that can be values of glambda expressions|wWell-typed closed values. Encoded as a data family with newtype instances in order to avoid runtime checking of values}6Convert a glambda value back into a glambda expression~ Exp ctx ty$ is a well-typed expression of type ty in context ctx. Note that a context is a list of types, where a type's index in the list indicates the de Bruijn index of the associated term-level variable. Elem xs x is evidence that x is in the list xs. EZ :: Elem xs x is evidence that x is the first element of xs. ES ev :: Elem xs x is evidence that x is one position later in xs than is indicated in ev Convert an  to a proper de Bruijn index+Equality on expressions, needed for testingPretty-prints a |{. This needs type information to know how to print. Pattern matching gives GHC enough information to be able to find the {" instance needed to construct the ` instance. {|}~{|}|~~{|}{|}~(C) 2015 Richard EisenbergBSD-style (see LICENSE)'Richard Eisenberg (rae@cs.brynmawr.edu) experimentalSafe%&,:OTKThe global variable environment maps variables to type-checked expressionsAn existential wrapper around ~', storing the expression and its type.$An empty global variable environment Extend a  with a new binding%Lookup a global variable. Fails with  if the variable is not bound. (C) 2015 Richard EisenbergBSD-style (see LICENSE)'Richard Eisenberg (rae@cs.brynmawr.edu) experimentalNone6:<=I "Class for the two glamorous monadsPrint a  without a newline at the endPrint a  with a newline Like the / monad, but also supporting error messages via s5A monad giving Haskeline-like interaction, access to !, and the ability to abort with .GPrompt the user for input, returning a string if one is entered. Like . Abort the  monad#Abort the computation with an error Hoist an  into Run a  computationRun a  computation  (C) 2015 Richard EisenbergBSD-style (see LICENSE)'Richard Eisenberg (rae@cs.brynmawr.edu) experimentalNone %Lex some program text into a list of %s, aborting upon failure%Lex some program text into a list of %s Overall lexer'Lex either one token or some whitespaceLex some whitespaceLex a  {- ... -}O comment (perhaps nested); consumes no input if the target doesn't start with {-.-Lex a block comment, without the opening "{-"Lex a line comment Lex one tokenLex one non-alphanumeric tokenLex one arithmetic operatorLex one alphanumeric token Lex one word (C) 2015 Richard EisenbergBSD-style (see LICENSE)'Richard Eisenberg (rae@cs.brynmawr.edu) experimentalNone[ XParse a sequence of semicolon-separated statements, aborting with an error upon failure2Parse a sequence of semicolon-separated statementsParse a w%, aborting with an error upon failureParse a wParse a k%, aborting with an error upon failureParse a kBind a name over an expressionParse the given nullary tokenParse the given unary tokenParse one of a set of :sposition of the current token current tokenremaining tokenslocation of the next token           (C) 2015 Richard EisenbergBSD-style (see LICENSE)'Richard Eisenberg (rae@cs.brynmawr.edu) experimentalSafe %&+,DQRT Length xs tells you how long a list xs is. LZ :: Length xs says that xs is empty. LS len :: Length xs tells you that xs has one more element than len says.Convert an expression typed in one context to one typed in a larger context. Operationally, this amounts to de Bruijn index shifting. As a proposition, this is the weakening lemma.cSubstitute the first expression into the second. As a proposition, this is the substitution lemma.5 (C) 2015 Richard EisenbergBSD-style (see LICENSE)'Richard Eisenberg (rae@cs.brynmawr.edu) experimentalSafe %&+,DOQRT.Given a lambda and an expression, beta-reduce.+Apply an arithmetic operator to two values.,Conditionally choose between two expressions Unroll a fix one level8A well-typed variable in an empty context is impossible.1Evaluate an expression, using big-step semantics.?Step an expression, either to another expression or to a value.(C) 2015 Richard EisenbergBSD-style (see LICENSE)'Richard Eisenberg (rae@cs.brynmawr.edu) experimentalNone %&+,:DOT/Abort with a type error in the given expressionCheck the given expression, aborting on type errors. The resulting type and checked expression is given to the provided continuation. This is parameterized over the choice of monad in order to support pure operation during testing. ( is the canonical choice for the monad.UTake a closed expression and shift its indices to make sense in a non-empty context.  (C) 2015 Richard EisenbergBSD-style (see LICENSE)'Richard Eisenberg (rae@cs.brynmawr.edu) experimentalNone$9;X!The glamorous Glambda interpreter!Prints welcome message"The welcome message#The current version of glambda$@Run a sequence of statements, returning the new global variables%Run a wE and then run another action with the global variables built in the w&)Interpret a command (missing the initial :).'()*!"#+$%&,-./0123456789'()*!"#+$%&,-./0123456789: !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLLBMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~    CDt                                   ! " # $ % & ' ( ) * + , -  . /0123456789:;<=>?@ABCDEFGHIJKL$glambda-1.0.2-47XZ7UJD2up24yxtr8WCKnLanguage.Glambda.UtilLanguage.Glambda.TypeLanguage.Glambda.TokenLanguage.Glambda.PrettyLanguage.Glambda.UncheckedLanguage.Glambda.StatementLanguage.Glambda.ExpLanguage.Glambda.GlobalsLanguage.Glambda.MonadLanguage.Glambda.LexLanguage.Glambda.ParseLanguage.Glambda.ShiftLanguage.Glambda.EvalLanguage.Glambda.CheckLanguage.Glambda.Repl Data.FunctorvoidbaseData.Type.EqualityRefl:~:PrecignoretopPrecrender toSimpleDoc maybeParens$$stripWhitespace nthDefault$fPrettyParseErrorSCtxSNilSConsITystySTySArrSIntTySBoolTyTyArrIntTyBoolTy readTyCon emptyContextrefineTy unrefineTyeqSTy $fPrettySTy$fShowTy $fPrettyTy $fITyBool$fITyInt $fITy(->)$fEqTyLTokenLTokenLParenRParenLambdaDotArrowColonArithOpIntBoolIfThenElseFixTAssignSemiNameUArithOpPlusMinusTimesDivideModLessLessEGreaterGreaterEEqualsuPlusuMinusuTimesuDivideuModuLessuLessEuGreater uGreaterEuEquals eqArithOp unArithOpunIntunBoolunNameunLoc $fShowLToken$fPrettyLToken $fShowToken $fPrettyToken$fShowUArithOp$fPrettyUArithOp $fShowArithOp$fPrettyArithOp $fEqUArithOp $fEqArithOp $fEqToken PrettyExp prettyExpColoringdefaultColoring defaultPretty prettyVar prettyLam prettyApp prettyArithprettyIf prettyFixUExpUVarUGlobalULamUAppUArithUCondUFixUIntEUBoolE$fPrettyExpUExp $fPrettyUExp StatementBareExp NewGlobal$fPrettyStatementGlamValValvalExpVarLamAppArithCondFixIntEBoolEElemEZESeqExp prettyVal$fPrettyExpVal $fPrettyVal$fPrettyExpExp $fPrettyExp $fGlamVal(->) $fGlamValBool $fGlamValIntGlobals emptyGlobalsextend lookupGlobalGlamMprintDoc printLineGlamEGlampromptquit issueError eitherToGlamErunGlamrunGlamE $fGlamMGlamE $fGlamMGlam$fMonadReaderGlobalsGlamE $fMonadGlam $fFunctorGlam$fApplicativeGlam$fMonadStateGlam $fMonadIOGlam $fMonadGlamE$fFunctorGlamE$fApplicativeGlamE$fMonadErrorGlamElexGlex parseStmtsG parseStmts parseStmtG parseStmt parseExpGparseExpshiftsubstevalstepcheckmain $fReportablea$fReportableGlobals$fReportable()$fReportableDoc-ansi-wl-pprint-0.6.8.1-AloTw2NbGBFHl1luttZjPa%Text.PrettyPrint.ANSI.Leijen.InternalDocGHC.BaseString SimpleDocghc-prim GHC.TypesTrue<$> arrowLeftPrecarrowRightPrec arrowPrec pretty_ty PrintingInfoalonegetDoc printingInfo printTogether ApplyColorprecInfoprettylamPrecappPrec appLeftPrec appRightPrecifPrecopPrec opLeftPrec opRightPrec pretty_exp elemToIntLamValBoolValIntVal D:R:Val(->)0 D:R:ValBool0 D:R:ValInt0EExp mtl-2.2.1-BLKBelFsPB3BoFeSWSOYj6Control.Monad.Error.Class throwErrormzerohaskeline-0.7.3.0System.Console.Haskeline getInputLine Data.EitherEitherunGlamEunGlamlexer lexer1_ws whitespace block_comment comment_body line_commentlexer1symbolicarith_op word_tokenwordLexerstring_bindtoktok'Parserparsenext_posstmtsstmtexprint_exptermappsfactorlamcondvartyarg_tytyconadd_opmul_opbool_opmk_opLength++LZLSapplyarithunfix impossibleVar typeErrorshift_into_ctx check_var helloWorldlambdaversiondoStmtsdoStmt runCommand Reportablereport CommandTablelooprunStmtsdispatchCommandcmdTablequitCmd reportErrorsparseLex printWithTypeprintValWithTypelexCmdparseCmdevalCmdstepCmdtypeCmdallCmdloadCmd