TODO
Throughout the code base, we try to have a consistent use of abbreviations. Here are most of those abbreviations and their meaning:
Twill stand for an extensible functor of types,Ewill stand for an extensible functor of expressions,Vwill stand for an extensible functor of values (the results of evaluation, often a subset of expressions),Bwill stand for an extensible functor of binders (really, variables, but the letterVwas already used, soBit is...),Rwill stand for a recursive occurrence of any functor: many definitions of a concrete functor must recursively call their extension,Ris how they do so, in an open-recursion style,UPstands for the universal property of folds, as described in the Meta-Theory à la Carte paper, in the direct direction,UP'stands for the universal property of folds, as described in the Meta-Theory à la Carte paper, in the reverse direction,- the subscript
__Fis used to indicate that a function returns a raw fixed point of its extension functor, rather than the usual existential package of said value with its reverse universal property proof.
Contains all the theory needed to build extensible languages, their static and dynamic semantics, the statement of soundness of those semantics, etc.
Contains the definition of extensible type and term language features to be combined. Features can be used as part of the source or target language of a program transformation, or even both.
Contains many extensible, static and dynamic semantics for the language features defined in Syntax.
Contains extensible compiler passes. Those define transformations from a given subset of input features to a given subset of output features.