Extensible ADT (EADT)¶
EADTs are “extensible algebraic data types”: they can be transformed (by adding or removing constructors) and their constructors are not tied to a specific EADT type, hence we can use them as constructors of different EADTs.
EADT constructors and operations can be defined independently (even in different modules) allowing a great modularity. As such there are an answer to the “expression problem” (cf Background section).