I see your versions of + and * are infixr rather than infixl.
Is that important?
I copied fixities from the Prelude [1] for + and * but don't know why they are infixl there.
Sorry, I just saw that I confused infixl and infixr in your question. In fact, in my two Semiring modules I use different fixities. infixr in the regexp library and infixl (copied from Prelude) in the (not yet published) library for parallel programming. So apparently, I don't care very much ;)
Are there good arguments in favor of or against either choice?
Best regards,
Sebastian