The goal of this project is to generate a number of approaches (in multiple languages) that address the Expression Problem. This first release, dating from December 2018, has been cleaned up and packaged properly for execution.
As coined by Philip Wadler [1], the Expression Problem is a new name for an old problem. The goal is to define a datatype by cases, where one can add new cases to the datatype and new functions over the datatype, without recompiling existing code, and while retaining static type safety.
There are various "solutions" to the Expression Problem. Each solution varies in the amount of code a user must write to implement them, and the language features they require.
In this project, we explore a number of such solutions. Our concern is not with the individual solutions to the Expression Problem (of which there are many), but rather the engineering of these. We provide an alternative, namely, to regenerate all code after modifying the domain.
[1] Wadler, Philip, Email to to Java Genericity Mailing List, 1998
Jan Bessai
Boris Düdder
George Heineman