@judofyr I tend to think that if the underlying theory has fewer special cases, that there will be more surprising things you'll discover you can do with it? for example, I feel like unparsing should be almost as easy as parsing in my library, although I haven't worked out how.
I'm particularly interested in the semiring stuff because that can encode a lot of context-sensitivity in ways I think feel reasonable--like carrying a symbol table around to disambiguate C's type-vs-variable thing.