Cli*_*ton 6 haskell classy-prelude foldable
单可遍历包中的MonoFoldable似乎能够实现所有通常的可折叠容器等等,例如,Bytestring
可以制作类似于同类元组的东西,MonoFoldable
但不能Foldable
.我的问题是,除了需要一些先进的GHC功能之外MonoFoldable
,我们是否会丢失任何我们没有的Foldable
内容,使得它对于实例编写者来说稍微有些棘手,并且可能会收到更加丑陋的错误消息?
例如,是否有一些代码在使用Foldable
编译时但是MonoFoldable
没有推断类型?或者其他任何使客户端(不是实例编写器代码)明显更简单的Foldable
东西MonoFoldable
?
你失去了参数性。
A 类型(Foldable f) => f a -> [a]
提供与(MonoFoldable c) => c -> [Element c]
.
您可以使用免费的定理生成器来获得一些属性的想法,但作为一个简单的示例,前一种类型提供了输出中的任何元素都必须出现在输入中的属性。后一种类型决不能保证此属性。