úÎF‰B !      Labelled rose-tree structure(c) Ivan Lazar MiljenovicMITIvan.Miljenovic@gmail.comSafe-+A simple labelled rose-tree data structure.!!!'Tree-based representation for Criterion(c) Ivan Lazar MiljenovicMITIvan.Miljenovic@gmail.comNoneMA more explicit tree-like structure for benchmarks than using Criterion's " type.SRemove the explicit tree-like structure into the implicit one used by Criterion.EUseful for embedding the results into an existing benchmark suite.ŠRun the specified benchmarks, printing the results (once they're all complete) to stdout in a tabular format for easier comparisons.#$%&'()*+,-./012345678-#$%&'()*+,-./012345678$Create tests and benchmarks together(c) Ivan Lazar MiljenovicMITIvan.Miljenovic@gmail.comNone &357CINThe union of two (* ->  Constraint) values.Whilst type EqNum a = (9 a, : a)" is a valid specification of a  Constraint when using the ConstraintKinds& extension, it cannot be used with 0 as type aliases cannot be partially applied.As such, you can use type EqNum = CUnion Eq Num instead.8A specialised monad used solely for running comparisons.>No lifting is permitted; the only operations permitted are ,  and  . 5Monoidally build up the parameters used to control a  environment.(This will typically be a combination of  with either  or . An alias for readability. 6An environment for combining testing and benchmarking.A tree of operations.MAn individual operation potentially consisting of a benchmark and/or test.Label a sub-part of a  TestBench.@Obtain the resulting tests and benchmarks from the specified  TestBench.wRun the specified benchmarks if and only if all tests pass, using a comparison-based format for benchmarking output.ªPlease note that this is currently very simplistic: no parameters, configuration, etc. Also, benchmark results will not be shown until all benchmarks are complete.For more control, use .jCreate a single benchmark evaluated to normal form, where the results should equal the value specified.tCreate a single benchmark evaluated to weak head normal form, where the results should equal the value specified.†A way of writing custom testing/benchmarking statements. You will probably want to use one of the pre-defined versions instead.VCompare how various input values (of the same type) behave for a specific function. By default:Results are only evaluated to Weak Head Normal Form'. To fully evaluate results, use ..No tests are performed by default; use either  or  to specify one.As with M but allow for polymorphic inputs by specifying the constraint to be used.'Evaluate all benchmarks to normal form.aAllow specifying how benchmarks should be evaluated. This may allow usage of methods such as nfIO), but this has not been tested as yet.£Don't run any benchmarks. I'm not sure why you'd want to do this as there's surely easier/better testing environments available, but this way it's possible.¨Don't run any tests. This isn't recommended, but could be useful if all you want to do is run comparisons (potentially because no meaningful tests are possible).xSpecify a sample baseline value to benchmark and test against (such that the result of applying the function to this a% is what everything should match).>You shouldn't specify this more than once, nor mix it with  or .4Specify a predicate that all results should satisfy.%Note that the last statement between ,  and 3 "wins" in specifying which testing (if any) to do.OBenchmark and test (if specified) this value against the specified function.NOnly benchmark (but do not test) this value against the specified function. NOnly test (but do not benchmark) this value against the specified function.7 ;<=>?@AB CD EFGHIJKLMNOPQRS TUVW!  !    ) ;<=>?@AB CD EFGHIJKLMNOPQRS TUVWX      !"#$%&'(()*+,,-./0123456789:;<=>?@A BCDEFGHIJKLMNOPQRSTUVWXYZ[\]testb_JiGw05vIHq90VoiAGBM7KE TestBenchTestBench.LabelTreeCriterion.Tree LabelTreeLeafBranch BenchForest BenchTreeflattenBenchForestbenchmarkForestCUnion Comparison ComparisonM CompParamsSameAs TestBenchMOpTree Operation collectiongetTestBenches testBenchnfEqwhnfEq mkTestBench compareFunccompareFuncConstraintbenchNormalForm withBenchMode noBenchmarksnoTestsbaselinetestWithcomp compBenchcompTest toCustomTreecrite_0hq2GguaREcFo9Wf5FDHL8Criterion.Types BenchmarkResultsresMean resStdDev resOutVarRowrowLabelrowDepth rowResultflattenBenchTreetoRowsmakeRow getResults rowsToBox rowToBoxesempty11indentPerLevel columnGap resHeaders resToBoxeswithHeadghc-prim GHC.ClassesEqbaseGHC.NumNumrunComparisonMComperCompInfoCIfunctoBenchtoTestCPunCP getOpTreesOpopNameopBenchopTestopTreeTo opForestTo toBenchmarkstoTests makeOpTreetreeList singleTree runTestBench runComparisoncompWithcompOp.: $fCUnionc1c2a