ϊΞΡίΚ‘t      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrsNone;The number of spaces to use for each level of indentation. @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. :An operand may return Just True or Just False to indicate > success or failure. It may also return Nothing to indicate a  discard. :Just False if the child is Just False; Nothing otherwise. 8Just True if the child is Just True; Nothing otherwise. AJust True is Just False and vice versa; Nothing remains Nothing. ;At least one of the Pdct in the list must be Just True. An 5 empty list or list with only Nothing is Just False. =None of the Pdct in list may be Just False. An empty list or & list with only Nothing is Just True. A tree of predicates. ARenames the top level of the Pdct. The function you pass will be  applied to the old name. @Given a function that un-boxes values of type b, changes a Node  from type a to type b. @Given a function that un-boxes values of type b, changes a Pdct  from type a to type b. BCreates a new operand. The Pdct is Just True or Just False, never  Nothing. <Turns an existing Pdct to one that never says False. If the C underlying predicate returns Just True, the new Pdct also returns 1 Just True. Otherwise, the Pdct returns Nothing. ;Turns an existing Pdct to one that never says True. If the D underlying predicate returns Just False, the new Pdct also returns 2 Just False. Otherwise, the Pdct returns Nothing. $Returns a tree that is always True. %Returns a tree that is always False. Forms a Pdct using . Forms a Pdct using . t-Indents text, and adds a newline to the end. )Shows a Pdct tree without evaluating it. Evaluates a Pdct. Verbosely evaluates a Pdct. AFilters a list of items by including only the ones for which the C Pdct returns Just True. Also, renames each top-level Pdct so that = the textual results include a description of the item being  evaluated. "Build a Pdct that compares items. Like 2 but allows the comparison of items that may fail  to return an ordering. Overloaded version of . -BParses a string to find the correct comparer; returns the correct  function to build a Pdct. 3 tu'Indent each level by this many spaces. 6If True, show discarded test results; otherwise, hide  them. The subject to evaluate <How many levels deep in the tree we are. Typically you will = start at level 0. This determines the level of indentation. vw'Indent each level by this many spaces. 6If True, show discarded test results; otherwise, hide  them. <How many levels deep in the tree we are. Typically you will = start at level 0. This determines the level of indentation. <How to show each item. This is used to add a description of A each item to the verbose output. This Text should be a one-line $ description, without any newlines. Use this Pdct to filter The list to filter @The results of the filtering, and the verbose output indicating % what was kept and discarded and why ?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 : order for the Pdct to be Just True; otherwise it is Just 3 False. The subject will be on the left hand side. ?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 Just = LT if the item is less than the right hand side; Just GT if B greater; Just EQ if equal to the right hand side. Return Nothing A if the item cannot return an item to be compared. The result of 2 the evaluation of the Pdct will then be Nothing. @When subjects are compared, this ordering must be the result in A order for the Pdct to be Just True; otherwise it is Just False, < or Nothing if the subject does not return an ordering. The ( subject will be on the left hand side. /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 : order for the Pdct to be Just True; otherwise it is Just 3 False. The subject will be on the left hand side. !?How to show the item being compared; used to describe the Pdct 'The right hand side of the comparison. "?How to show the item being compared; used to describe the Pdct 'The right hand side of the comparison. #?How to show the item being compared; used to describe the Pdct 'The right hand side of the comparison. $?How to show the item being compared; used to describe the Pdct 'The right hand side of the comparison. %?How to show the item being compared; used to describe the Pdct 'The right hand side of the comparison. &?How to show the item being compared; used to describe the Pdct 'The right hand side of the comparison. '?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. x.  !"#$%&'()*+,-.   '()*+, !"#$%&-,   tuvw !"#$%&'()*+,-xNone9BParses 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. ./0123456789 ./0123456789 5243.10/6789.10/24356789NoneyValues on the operator stack. z+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. @ACreates 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. y€:;<=>?z{|}@>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. ~:;<=>?@=?>:<;@ y€:<;=?>z{|}@~None A$Is this an infix or RPN expression? E4A single type for both RPN tokens and infix tokens. FCreates Operands from Pdct. GThe And operator HThe Or operator IThe Not operator JOpen parentheses KClose parentheses L>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. ABCDE‚ƒFGHIJK„L ABCDEFGHIJKL ACBDEFGHIJKL ACBDE‚ƒFGHIJK„LNone!M0How verbose to be when showing names of groups. N8Show all groups, and indicate which groups are skipped. O"Show groups that are not skipped. P:Show no group names at all. However, groups will still be  indented. SATrue if the tree returned a result without completely evaluating * all parts of the tree. This can occur if ^ is True and & one of the tests in the tree failed. TOptions for running tests. V&Indent each level by this many spaces W'Use this verbosity for tests that pass X'Use this verbosity for tests that fail Y4Groups are run only if this predicate returns True. Z3Tests are run only if this predicate returns True. [!Some tests might be skipped; see Z. This controls ; whether you want to see a notification of tests that were / skipped. (Does not affect skipped groups; see \  for that.) \7Show group names? Even if you do not show the names of 8 groups, tests within the group will still be indented. ]The subjects to test ^:If True, then tests will stop running immediately after a 8 single test fails. If False, all tests are always run. _@How verbose to be when reporting the results of tests. It would D be possible to have many more knobs to control this behavior; this > implementation is a compromise and hopefully provides enough / verbosity settings without being too complex. `8Shows discarded subjects. Cumulative, so also does what  b and a do. Also shows all discarded $ evaluation steps for all subjects. a;Show subjects that are True. (This is cumulative, so False 0 subjects are shown too, as they would be using b.) @ Shows all evaluation steps that led to the subject being True; 4 however, does not show discarded evaluation steps. b@Show subjects that are False. In addition, shows all evaluation C steps that led to the subject being False; however, does not show A discarded evaluation steps. Does not show True subjects at all. c,Show only whether the test passed or failed dShow nothing at all eAA test is a function of this type. The function must make chunks 5 in a manner that respects the applicable verbosity. iA tree of tests. k"The name of a test or of a group. mCreates groups of tests. nCreates tests. …4Determines whether to show a subject, and shows it. †;Given a Verbosity and a Maybe Boolean indicating whether a C subject is True, False, or a discard, returns whether to show the ? subject and whether to show the discards contained within the  subject. o!Passes if every subject is True. p(Passes if at least n subjects are True. q%Shows a tree, without evaluating it. r0Evaluates a tree. This function is the basis of s, which # is typically a bit easier to use. sBRuns each test in a list of tests (though each test might not run  if ^3 is True.) Reports on how many passed and how many  failed. (if ^* is True, the FailCount will never exceed  1.) 0MNOPQRSTUVWXYZ[\]^_`abcde'Use this verbosity for tests that pass 'Use this verbosity for tests that fail fghijklmn…†‡ˆop‰Šqr Most options ?The tree will indented by this many levels; typically you will  want to start this at 0. ;The first element of the tuple is True if the tree was not % fully evaluated. This can happen if ^ is True and @ one of the tests in the tree failed. The second element of the ? tuple is a list of Either; each element of the list will be a B Left if that component of the tree was not a test, or a Right if @ that element was a test. The Right will contain a tuple, where @ the first element indicates whether the test passed or failed, . and the second element is the list of Chunk. ‹Œs(MNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrs(keijfhgnopm_dcba`MPONRQsqTUVWXYZ[\]^SlrMPONQRST UVWXYZ[\]^_dcba`efhgijklmn…†‡ˆop‰Šqr‹ŒsŽ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGH:IJKLMNOPQRSTUVWWXYZ[\]^_`abcdefghijkklmnopqrstuvwxyz{|}~€‚Iƒ„…†‡ˆu‰Š‹Œprednote-0.8.0.0Data.Prednote.PdctData.Prednote.Expressions.RPNData.Prednote.Expressions.InfixData.Prednote.ExpressionsData.Prednote.TestTree ShowDiscards IndentAmtLevelNodeOperand NeverTrue NeverFalseNotOrAndPdctLabelrenameboxNodeboxPdctandornotoperand neverFalse neverTruealwaysnever&&&|||showPdctevalevaluatefilter compareBycompareByMaybecomparegreaterlessequal greaterEqlessEqnotEq greaterBylessByequalBy greaterEqBylessEqBynotEqBy parseComparerOperatorOpNotOpOrOpAndRPNToken TokOperator TokOperandError pushOperand pushOperator pushTokenparseRPNParenCloseOpen InfixTokenTokParenTokRPN createRPNExprDescRPNInfixTokenopAndopOropNot openParen closeParenparseExpressionGroupVerbosity AllGroups ActiveGroupsNoGroups FailCount PassCount ShortCircuitTestOpts tIndentAmttPassVerbositytFailVerbosity tGroupPred tTestPredtShowSkippedTeststGroupVerbosity tSubjects tStopOnFail VerbosityDiscards TrueSubjects FalseSubjectsPassFailSilentTestFuncPayloadTestGroupTestTreeNamePassgrouptesteachSubjectMustBeTruenSubjectsMustBeTrue showTestTreeevalTreerunTestsindent labelBoolevalAndevalOr $fShowPdct OpStackValprocessRPNTokenpopperpopThroughOpen processParenpopRemainingOperators StkOpenParenStkOpprocessInfixTokenunToken toksToRPN showSubjectisSubjectAndDiscardsShown showTestTitleisTrueskip evalGroupevalTest unfoldList