A conversation model

One of conversation-related problems is the complexity of establishing an appropriate set of rules (etiquette, that is). But since conversations can be represented using directed graphs, it's not that hard to solve it nicely: everyone could pick their preferred set of rules, follow those, and only read the conversation subgraphs where those rules are followed, even without getting interrupted threads.

I've tried to model/sketch it in Agda, resulting in these: Tree, Etiquette. Then implemented it in Haskell, extending with topics in addition to rules: wrote a basic forum using it.