During the last Algebra of Programming meeting we were talking about idioms (applicative functors), monads, traversals, and such. At one moment a definition of idiom morphism appeared on the whiteboard, which is a function (a brave person might even say `natural transformation’) of type (for applicative
f :: M a -> N a
which respects the following:
f . pure = pure f (mf <*> mx) = f mf <*> f mx
I was wondering: Sometimes it is the case that homomorphisms of simpler algebraic structures (for example, monoids) are authomatically homomorphisms of more complicated structures (for example, groups).