úÎx]oąG      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFSafeĺGHIJKLMNCommand-line parsing(c) Ivan Lazar MiljenovicMITIvan.Miljenovic@gmail.comNone"#^This is the same as O1 from criterion but with the verbosity set to P& to avoid unnecessary noise on stdout.QRSTUVWXYZ[\]^_QSTRUVWXLabelled rose-tree structure(c) Ivan Lazar MiljenovicMITIvan.Miljenovic@gmail.comSafe3 eEA simple labelled rose-tree data structure also containing the depth.`abc1Tree-based representation for Criterion and Weigh(c) Ivan Lazar MiljenovicMITIvan.Miljenovic@gmail.comNone &'<QVŐ dInvariant: length == rowDepth(The results from measuring memory usage. MA more explicit tree-like structure for benchmarks than using Criterion's e type. How to weigh a function.An IO-based variant of  .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.fQHuman-readable description of the number of bytes used. Assumed non-negative.gnUnlike terminal output, this instance creates columns for benchmarks, weighing, etc. even if they're not used.hnUnlike terminal output, this instance creates columns for benchmarks, weighing, etc. even if they're not used. ijklmnopqrdstuvwxyz{|}~€‚ƒ„… $Create tests and benchmarks together(c) Ivan Lazar MiljenovicMITIvan.Miljenovic@gmail.comNone "#;<=>?AKmm'8A specialised monad used solely for running comparisons.>No lifting is permitted; the only operations permitted are 8, 9 and :.1A convenience class to make it easier to provide  values.You can either:Provide no parameters with mempty&Provide values chained together using † or <>,Use the list instance and provide a list of  values.5Monoidally build up the parameters used to control a  environment.(This will typically be a combination of * with either 2 or 5.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.For more control, use .As with * but allow specifying a custom default ‡ parameter rather than .jCreate a single benchmark evaluated to normal form, where the results should equal the value specified.Will also weigh the function.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 2 or 5 to specify one."As with !H but use the provided list of values to base the benchmarking off of.˛This is useful in situations where you create an enumeration type to describe everything you're benchmarking and a function that takes one of these values and evaluates it.20 is used on the first value (if non-empty); the ˆ' instance is used to provide labels.# A variant of ". that allows for the function to return an ‰ value.$ A variant of "- where you provide your own equivalent to 2.Most useful with 4.% A variant of " that doesn't use 2, (allowing you to specify your own test).&An extension to " that uses the Š and ‹. instances to generate the list of all values.'An extension to # that uses the Š and ‹. instances to generate the list of all values.(An extension to $ that uses the Š and ‹. instances to generate the list of all values.) A variant of comapreFuncAll that doesn't use 2, (allowing you to specify your own test).*'Evaluate all benchmarks to normal form.+A combination of * and 6‚, taking into account the common case that you want to consider a value that can - and should - be evaluated to normal form., A variant of + where the results are within IO.-:Evaluate all IO-based benchmarks to weak head normal form..0Evaluate all IO-based 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.0Ł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.1¨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).2xSpecify 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 1 or 5.3 A variant of 2 where the function returns an ‰ value.4 A variant of 23 that lets you specify how to test for equality.wThe first argument to the provided function will be the "baseline" value; the second will be the value being tested.54Specify a predicate that all results should satisfy.%Note that the last statement between 5, 2 and 13 "wins" in specifying which testing (if any) to do.61Calculate memory usage of the various parameters.Note that to achieve this, ä and associated functions will run copies of itself to be able to calculate memory usage in a pristine environment (i.e. without influence of caching from testing and benchmarking). As such, you may wish to use the  -threaded: GHC option when building your benchmarking executable.7An IO-based equivalent to 68OBenchmark and test (if specified) this value against the specified function.9aOnly benchmark and possibly weigh (but do not test) this value against the specified function.:WOnly test (but do not benchmark or weigh) this value against the specified function. -Define the benchmark to be performed, if any.jIf a benchmark is performed, should its memory usage also be calculated? See the documentation for 6 on how to get this work.Should the result be checked?;  !"#$%&'()*+,-./0123456789:;!"#$%&'()+,*-./02345167 89:  ŒŽ‘’“”•–—˜™š›œž       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUSVWXYZ[\]^_`abcdefghijkSVlmnopqrrstuvvwxyz{|}~€‚ƒ„……†‡ ˆ‰Š‹SVŒ‰Ž‘‰’“‰’”•–—˜™š›œžŸ Ą˘Ł¤Ľ(testbench-0.2.1.2-Jbl4bF4FFyh1KMBvzKXxNr TestBenchPaths_testbenchTestBench.CommandsTestBench.LabelTreeTestBench.EvaluatetestBenchConfig LabelTreeLeafBranchDepth GetWeightEvaleNameeBencheWeigh EvalForestEvalTree getWeight getWeightIOflattenBenchForest evalForest Comparison ComparisonM ProvideParamstoParams CompParams TestBenchMOpTree Operation collectiongetTestBenches testBench testBenchWithnfEqwhnfEq mkTestBench compareFunccompareFuncListcompareFuncListIOcompareFuncListWithcompareFuncList'compareFuncAllcompareFuncAllIOcompareFuncAllWithcompareFuncAll'benchNormalForm normalForm normalFormIObenchIObenchNormalFormIO withBenchMode noBenchmarksnoTestsbaseline baselineIO baselineWithtestWithweighweighIOcomp compBenchcompTest$fMonoidCompParams$fSemigroupCompParams$fProvideParams[]ab$fProvideParamsCompParamsab$fFunctorTestBenchM$fApplicativeTestBenchM$fMonadTestBenchM$fMonadIOTestBenchM$fFunctorComparisonM$fApplicativeComparisonM$fMonadComparisonM$fMonadIOComparisonMversion getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDirgetDataFileName(criterion-1.4.1.0-6bNBVljTSTR1mCI0ryx7kJCriterion.Main.Options defaultConfigCriterion.TypesQuiet RunTestBenchWeighVersionListRunrunTestsrunBenchbenchCfg optionParser parseWith versionInforesetUnusedConfig configParser weighIndexArg weighFileArg foldLTree mapMaybeTreemapMaybeForestleavesrowPath Benchmarkbytes$fToNamedRecordRow $fToRecordRowflattenBenchTree weighIndex BenchResultsresMean resStdDev resOutVarRowrowLabelrowDepthisLeafrowBench rowWeight EvalConfigEC benchConfig evalParam EvalParamsEPhasBenchhasWeigh nameWidthWeight bytesAllocnumGC GetWeightIObaseGHC.BasemappendConfigGHC.ShowShowghc-prim GHC.TypesIOGHC.EnumBoundedEnumrunComparisonMCompInfoCIfunctoBenchtoWeightoTestCPwithOpsmkOps getOpTreesOpopNameopBenchopWeighopTest