Кстати, там есть какое-то особое решение expression problem, специалное для free monad?
Я когда про expression problem слышу, всегда хочу переспросить, а какую задачу требуется решить. Потому что решать некую абстрактную expresstion problem (про которую за пределами Хаскеля вообще, похоже, не знают) - это мне непонятно.
Но решение точно существует, потому что см. beam. Там Church Encoded Free Monad в движке, и есть требуемая расширяемость. Но это все, конечно, безумная машинерия там