La documentation pour algebra/2.1.1.2/doc/html montre un nombre colossal de classes de types. Comment déclarer qu'une structure en question doit être équipée d'une opération associative commutative et d'un élément unité/identité, mais sans autre chose (inverses, distributivité, etc.)?Monoïde commutable du paquet 'algèbre' sur Hackage
Je pense
reduce :: Monoid m => (a -> m) -> [a] -> m
mais les instances de Data.Monoid ne sont pas censés être commutative et je veux les utilisateurs de ma fonction pour voir qu'ils ont besoin commutatif pour la fonction de travailler en regardant le type.
C'est la bonne réponse. –