This is a lot of complication for in what most OOP languages with interfaces would simply be something like:
interface Timestamped {
timestamp: UTCTime;
}
interface Msg {
sender: PlayerId;
}
class Quote implements Timestamped, Msg {
timestamp: UTCTime;
sender: PlayerId;
}
Why is this so hard in Haskell? It doesn't have interface polymorphism?