> 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 (e.g., no casts).
Why should I care about recompiling? That's an implementation detail.
Taking the compilation stuff out, it looks very similar to classy lenses.
> 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 (e.g., no casts).
Why should I care about recompiling? That's an implementation detail.
Taking the compilation stuff out, it looks very similar to classy lenses.