Derivation internals

Todo

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

Derivation task

Todo

how derivation task is represented internally

Closure of generators

Todo

how do we implement closure of derived generators using local StateT

Analysis of data for recursion

Todo

how do we analyse which constructors are (mutually) recursive

Derivation tuning via parametrisation

Todo

DeriveBodyForType and DeriveBodyForCon interfaces, their role and design

Dependencies calculation

Todo

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

Ordering in the “least-effort” strategy

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