Here is a blog post focusing on how Hindsight’s event versioning system, notably how consecutive upcast functions are automatically composed.
It is mostly a technical Haskell blog post about type class (meta-)programming. I believe you might benefit from it even if you are not interested in event sourcing at all. ![]()