La documentación para algebra/2.1.1.2/doc/html muestra un número colosal de clases de tipos.Monoide conmutativo del paquete 'álgebra' en Hackage
¿Cómo puedo declarar que una estructura en cuestión debe estar equipada con una operación asociativa conmutativa y un elemento unidad/identidad, pero sin nada más (inversas, distributividad, etc.)?
Estoy pensando en
reduce :: Monoid m => (a -> m) -> [a] -> m
pero no se supone que los casos de Data.Monoid ser conmutativa y quiero usuarios de mi función para ver que necesitan conmutatividad para la función de trabajar mirando el tipo.
Esta es la respuesta correcta. –