Hackage中'代数'包中的交换幺半群

npo*_*cop 6 haskell hackage abstract-algebra

为文档代数/ 2.1.1.2/DOC/HTML示出了庞大数量的类型的类.

如何声明有问题的结构必须配备可交换的关联操作和单元/标识元素,但没有其他任何东西(反转,分配等)?

我在想

reduce :: Monoid m => (a -> m) -> [a] -> m
Run Code Online (Sandbox Code Playgroud)

但是Data.Monoid的实例不应该是可交换的,我希望我的函数的用户看到他们需要通过查看类型来使函数工作的可交换性.

Sjo*_*her 8

(Abelian m, Monoidal m)

它似乎Monoidal比你想要的要多得多,但它都是基于Natural成为一个Semiring.