MonoFoldable有什么损失吗?

Cli*_*ton 6 haskell classy-prelude foldable

单可遍历包中的MonoFoldable似乎能够实现所有通常的可折叠容器等等,例如,Bytestring可以制作类似于同类元组的东西,MonoFoldable但不能Foldable.我的问题是,除了需要一些先进的GHC功能之外MonoFoldable,我们是否会丢失任何我们没有的Foldable内容,使得它对于实例编写者来说稍微有些棘手,并且可能会收到更加丑陋的错误消息?

例如,是否有一些代码在使用Foldable编译时但是MonoFoldable没有推断类型?或者其他任何使客户端(不是实例编写器代码)明显更简单的Foldable东西MonoFoldable

Der*_*ins 4

你失去了参数性。

A 类型(Foldable f) => f a -> [a]提供与(MonoFoldable c) => c -> [Element c].

您可以使用免费的定理生成器来获得一些属性的想法,但作为一个简单的示例,前一种类型提供了输出中的任何元素都必须出现在输入中的属性。后一种类型决不能保证此属性。