algebra/2.1.1.2/doc/html的文档显示了大量的类型类。
我如何声明一个有问题的结构必须配备一个交换关联运算和一个单位/恒等元素,但没有其他任何东西(逆、分布等)?
我在想
reduce :: Monoid m => (a -> m) -> [a] -> m
但是 Data.Monoid 的实例不应该是可交换的,我希望我的函数的用户通过查看类型来看到他们需要可交换性才能使函数工作。
algebra/2.1.1.2/doc/html的文档显示了大量的类型类。
我如何声明一个有问题的结构必须配备一个交换关联运算和一个单位/恒等元素,但没有其他任何东西(逆、分布等)?
我在想
reduce :: Monoid m => (a -> m) -> [a] -> m
但是 Data.Monoid 的实例不应该是可交换的,我希望我的函数的用户通过查看类型来看到他们需要可交换性才能使函数工作。