S~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}None)@How many levels of indentation to use. Typically you will start D this at zero. It is incremented by one for each level as functions  descend through the tree. ;The number of spaces to use for each level of indentation. #The result from evaluating a Pdct. !The label from the original Pdct ?The boolean result from evaluating the node. If the node is an A operand, this is the result of applying the operand function to B the subject. Otherwise, this is the result of application of the 3 appropriate boolean operation to the child nodes. <Is this result hidden in the result by default? Hiding only @ affects presentation; it does not affect how this Pdct affects  any parent Pdct. Most basic building block.  Negation ;Disjunction. If at least one Pdct in the list is True, the < result it True. If the list is empty, the result is False. =Conjunction. If any Pdct in the list is False, the result is 2 False. If the list is empty, the result is True. 0A predicate. Each Pdct contains a tree of Node. $Label used when showing the results 9As results are computed, this function is applied to the A result. If this function returns False, then this Pdct will not % be shown by default in the results. 1Determines whether a result is shown by default. ARenames the top level of the Pdct. The function you pass will be  applied to the old name.  Always True  Always False Creates and labels operands. &Creates And Pdct using a generic name %Creates Or Pdct using a generic name &Creates Not Pdct using a generic name !2Changes a Pdct so it is always hidden by default. "1Changes a Pdct so it is always shown by default. #;Changes a Pdct so that it is hidden if its result is True. $<Changes a Pdct so that it is hidden if its result is False. %Forms a Pdct using ; assigns a generic label. &Forms a Pdct using ; assigns a generic label. '@Given a function that un-boxes values of type b, changes a Pdct  from type a to type b. (@Given a function that un-boxes values of type b, changes a Node  from type a to type b. )<Applies a Pdct to a particular value, known as the subject. ~-Indents text, and adds a newline to the end. #Creates a plain Chunk from a Text. +)Shows a Pdct tree without evaluating it. -<Shows a Result in a pretty way with colors and indentation.  shorter x y2 is True if list x is shorter than list y. Lazier @ than taking the length of each list and comparing the results. .AShows the top of a Result tree and all the child Results. Adds a % short label at the top of the tree. /<Filters a list. Also returns chunks describing the process. 0"Build a Pdct that compares items. 1Overloaded version of 0. 2@Builds a Pdct for items that might fail to return a comparison. ?BParses a string to find the correct comparer; returns the correct  function to build a Pdct. F  !"#$%&'()*~+,-&Indent each level by this many spaces )If True, shows all Pdct, even ones where   is  True. Otherwise, respects   and does not show hidden Pdct. =How deep in the tree we are; this increments by one for each  level of descent. The result to show .%Label to add to the top of the tree. &Indent each level by this many spaces #Indent the top by this many levels )If True, shows all Pdct, even ones where   is  True. Otherwise, respects   and does not show hidden Pdct. The result to show /How to describe each subject &Indent each level by this many spaces )If True, shows all Pdct, even ones where   is  True. Otherwise, respects   and does not show hidden Pdct. Used to perform the filtering 0?How to show the item being compared; used to describe the Pdct 7Description of the type of thing that is being matched >How to compare an item against the right hand side. Return LT A if the item is less than the right hand side; GT if greater; EQ " if equal to the right hand side. @When subjects are compared, this ordering must be the result in C order for the Pdct to be True; otherwise it is False. The subject  will be on the left hand side. 1/Description of the type of thing being matched 'The right hand side of the comparison. @When subjects are compared, this ordering must be the result in C order for the Pdct to be True; otherwise it is False. The subject  will be on the left hand side. 2$How to show the item being compared +Description of type of thing being matched @How to compare against right hand side. If Nothing, a Pdct that # always returns False is returned. 2Ordering that must result for the Pdct to be True 3?How to show the item being compared; used to describe the Pdct 'The right hand side of the comparison. 4?How to show the item being compared; used to describe the Pdct 'The right hand side of the comparison. 5?How to show the item being compared; used to describe the Pdct 'The right hand side of the comparison. 6?How to show the item being compared; used to describe the Pdct 'The right hand side of the comparison. 7?How to show the item being compared; used to describe the Pdct 'The right hand side of the comparison. 8?How to show the item being compared; used to describe the Pdct 'The right hand side of the comparison. 9?How to show the item being compared; used to describe the Pdct 7Description of the type of thing that is being matched How to compare two items :?How to show the item being compared; used to describe the Pdct 7Description of the type of thing that is being matched How to compare two items ;?How to show the item being compared; used to describe the Pdct 7Description of the type of thing that is being matched How to compare two items <?How to show the item being compared; used to describe the Pdct 7Description of the type of thing that is being matched How to compare two items =?How to show the item being compared; used to describe the Pdct 7Description of the type of thing that is being matched How to compare two items >?How to show the item being compared; used to describe the Pdct 7Description of the type of thing that is being matched How to compare two items ?*The string with the comparer to be parsed 8A function that, when given an ordering, returns a Pdct @If an invalid comparer string is given, Nothing; otherwise, the  Pdct. @  !"#$%&'()*+,-./0123456789:;<=>?@ %&'(!"#$ )*-.+,/029:;<=>1345678?5  !"#$%&'()*~+,-./0123456789:;<=>?NoneKBParses an RPN expression and returns the resulting Pdct. Fails if B there are no operands left on the stack or if there are multiple @ operands left on the stack; the stack must contain exactly one  operand in order to succeed. @ABCDEFGHIJK @ABCDEFGHIJK GDFE@CBAHIJK@CBADFEGHIJKNoneValues on the operator stack. +If the token is a binary operator A, then: DIf A is left associative, while there is an operator B of higher or @ equal precedence than A at the top of the stack, pop B off the $ stack and append it to the output. BIf A is right associative, while there is an operator B of higher D precedence than A at the top of the stack, pop B off the stack and  append it to the output. Push A onto the stack. ;If a token is an operand, append it to the postfix output. #And has higher precedence than Or. >Pops operators from the operator stack and places then in the E output queue, as long as there is an And operator on the top of the  operator stack. @Pops operators off the operator stack and onto the output stack 9 as long as the top of the operator stack is not an open E parenthesis. When an open parenthesis is encountered, pop that too, ? but not onto the output stack. Fails if the stack has no open  parentheses. APlaces an open parenthesis on the top of the operator stack. For B Close parenthesis, pops operators off the operator stack through 2 the next open parenthesis on the operator stack. RACreates an RPN expression from an infix one. Fails only if there D are mismatched parentheses. It is possible to create a nonsensical 1 RPN expression; the RPN parser must catch this. >Pops remaining items off operator stack. Fails if there is an < open paren left on the stack, as this indicates mismatched  parenthesis. LMNOPQR>The input tokens, with the beginning of the expression on the  left side of the sequence. 9The output sequence of tokens, with the beginning of the * expression on the left side of the list. LMNOPQROQPLNMR LNMOQPRNone S$Is this an infix or RPN expression? W4A single type for both RPN tokens and infix tokens. XCreates Operands from Pdct. YThe And operator ZThe Or operator [The Not operator \Open parentheses ]Close parentheses ^>Parses expressions. Fails if the expression is nonsensical in B some way (for example, unbalanced parentheses, parentheses in an E RPN expression, or multiple stack values remaining.) Works by first ) changing infix expressions to RPN ones. STUVWXYZ[\]^ STUVWXYZ[\]^ SUTVWXYZ[\]^ SUTVWXYZ[\]^NoneeA single test. h8Applied to the results of all applications of testFunc; . determines whether the test passes or fails. i*This function is applied to each subject. j Default verbosity for the test. k"The name of a test or of a group. m8Determines which ShowTest to use for a particular test. o'Use this ShowTest when the test passes p&Use this ShowTest when the test fails qBDetermines whether to show any of the results from a single test. r@Show the first line, which indicates whether the test passed or : failed and gives the label for the test. Whether to show < individual subjects is determined by the TrueVerbosity and  FalseVerbosity. s'Do not show any results from this test t/Use this verbosity for subjects that are False u.Use this verbosity for subjects that are True vBHow verbose to be when showing the results of running a Pdct on a  single subject. wShow all Result x?Show results according to the default settings provided in the  Result itself y&Do not show any results from the Pdct #Creates a plain Chunk from a Text. z/Evaluates a test for a given list of subjects. {Shows a result with indenting. |.The test passes if each subject returns True. }AThe test passes if at least a given number of subjects are True. AReturns True if the list has at least this many elements. Lazier % than taking the length of the list. #_`abcdefghijklmnopqrstuvwxyz{&Indent each level by this many spaces =Shows each subject. The function should return a single-line " text without a trailing newline. :If Just, use this TestVerbosity when showing the test. If % Nothing, use the default verbosity. The result to show |};The number of subjects that must be True. This should be a  positive number. _`abcdefghijklmnopqrstuvwxyz{|}kvyxwutqsrmnoplefghij_`abcd|}z{_`abcdefghijklmnopqsrtuvyxwz{|}      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYKZ![\]^_`aabcdeffghijklmmnopqrstuvwx1yz{|}~Z|prednote-0.14.0.0Data.Prednote.PdctData.Prednote.Expressions.RPNData.Prednote.Expressions.InfixData.Prednote.ExpressionsData.Prednote.TestShowAllLevel IndentAmtRNodeROperandRNotROrRAndResultrLabelrBoolrHiderNodeNodeOperandNotOrAndPdctpLabelpHidepNodeHideLabelrenamealwaysneveroperandandornothideshowhideTrue hideFalse&&&|||boxPdctboxNodeevaluate evaluateNodeshowPdctfilter showResult showTopResult verboseFilter compareBycomparecompareByMaybegreaterlessequal greaterEqlessEqnotEq greaterBylessByequalBy greaterEqBylessEqBynotEqBy parseComparerOperatorOpNotOpOrOpAndRPNToken TokOperator TokOperandError pushOperand pushOperator pushTokenparseRPNParenCloseOpen InfixTokenTokParenTokRPN createRPNExprDescRPNInfixTokenopAndopOropNot openParen closeParenparseExpression TestResult resultName resultPassresultSubjectsresultDefaultVerbosityTesttestNametestPasstestFunc testVerbosityNamePass TestVerbosityonPassonFailShowTest ShowFirstLineHideTestFalseVerbosity TrueVerbosity Verbosity ShowDefaultsHideAllevalTesteachSubjectMustBeTruenSubjectsMustBeTrueindentplainshorter labelBool takeThrough $fShowPdct OpStackValprocessRPNTokenpopperpopThroughOpen processParenpopRemainingOperators StkOpenParenStkOpprocessInfixTokenunToken toksToRPNatLeast showTestTitle showSubject