Things to be done

Todo

Almost every section here should have a reference to some section in reference/contributors for technical explanations.

original entry

Todo

Maybe, more realistic example, e.g. alternating list of e.g. Nats and Strings.

original entry

Todo

We definitely need more examples of particular derivation tasks and corresponding signatures here.

Examples should contain:

  • trivial examples for non-recursive data type with no type arguments;

  • examples for recursive data type with no type arguments, like Nat;

  • examples for a data type with some non-dependent type arguments (i.e. when no type argument does not depend on another); all variants of “all given”, “all generated”, “some given, some generated” should be present;

  • example for a data type with dependent type arguments.

original entry

Todo

least-effort strategy and the company

original entry

Todo

relativity of these terms to the derivation task

original entry

Todo

staff from limitations

original entry

Todo

more constructor derivator tactics

original entry

Todo

“caching” derived generators (for similar derivation tasks)

original entry

Todo

tuning of generators combinators

original entry

Todo

support of external generators from the context of derivation, not from the context of generation

original entry

Todo

getting rid of fuel pattern

original entry

Todo

wider class of data structures which are supporrted for automatic derivation

original entry

Todo

Generator on very high level of abstraction is a calculation of a value (or values) of some particular type in particular context.

original entry

Todo

comparison to the design of QuickCheck and Hedgehog (in particular, in shrinking)

original entry

Todo

why generators must support emptiness (take example from the readme)

original entry

Todo

emptiness marking preservation in combinations

original entry

Todo

“type aliases” for most useful generators types (two of three, ha-ha)

original entry

Todo

Value, or maybe value (depending on emptiness)

original entry

Todo

Random nature of generation

original entry

Todo

finiteness of generators

original entry

Todo

fuel-pattern as a workaround for infinite datatypes

original entry

Todo

end user usability

  • entry-point functions for actual running (like quickcheck, check, forAll, etc.)

  • smart comparison functions (like ===, shouldNotContain, etc.)

  • nice violation diff printing of comparison functions

original entry

Todo

staff from limitations

original entry

Todo

explicit shuffling

original entry

Todo

support of shrinking or similar directed mutations

original entry

Todo

tuning of combinations of generators

original entry

Todo

proving or testing of laws of existing combination upon generators

original entry

Todo

co-generators or similar stuff for generation of functions; research of how this applies to dependently types functions

original entry

Todo

Technical descriptions on how this or that part is implemented

original entry

Todo

Info on how this or that part of the derivation facility is implemented. Think of useful sections below

original entry

Todo

how derivation task is represented internally

original entry

Todo

how do we implement closure of derived generators using local StateT

original entry

Todo

how do we analyse which constructors are (mutually) recursive

original entry

Todo

DeriveBodyForType and DeriveBodyForCon interfaces, their role and design

original entry

Todo

An approach on how do we analyse which arguments depend on which in constructors

original entry

Todo

How do we calculate in which order arguments should be generated. Three phases of generation:

  • first right-to-left phase

  • left-to-right phase

  • second right-to-left phase

original entry

Todo

  • On how Gen monad internals.

  • Generalised generation with random seed.

  • Specialised cases for pure and empty.

  • Fusion during map, <*> and >>=.

original entry

Todo

Add some glue text

original entry

Todo

Technical description of the entry derivation function.

original entry

Todo

Technical description of the derivation elaboration script.

original entry

Todo

Technical description of the Gen monad

original entry

Todo

Technical description of functions used for formulating tested properties and for running property checks.

original entry