The Expression Problem and its solutions

The Expression Problem was first described in 1998 as how to organize data and functionality to allow independent extensions for both of them in a statically typed language. Nine years later the first non partial solution "finally tagless" solved the problem without complex type systems or violating some constrains of the problem. Five years later object algebras solved also problem with object oriented approach, even without higher kinded types.

Here I explain the Expression Problem, show advantages of the two traditional approaches and for each a extension and also finally tagless and object algebras.