1 . The Expression Problem

"The goal is to define a data type by case, where one can add new cases to the data type and new functions over the dat
a type , without recompiling existing code, and while retaining static type safety."

it is introducing pseudoconstructors over monadic values because the chain of unevaluated (yet) functions is actually forming a datastructure . do not forget that Haskell is a lazy evaluation language !!

7 . Modular Monadic Compilation

8 . References

Dan Popa, "Modular evaluation and interpreters using monads and type classes in Haskell" , Studii si Cercetari Ştiinţifice, Seria Matematica, Univ. Bacău, (18) 2008. An Open Office (.sxw) file including example code is available here:
Download .sxw After loading the .sxw in the Open Office, press the PDF button from the toolbar to produce your own .pdf file. Or
Official PDF of the paper for <DOWNLOAD> , having the following title: