单折叠 https://hackage.haskell.org/package/mono-traversable-1.0.0.1/docs/Data-MonoTraversable.html#t:MonoFoldable in the 单通行 https://hackage.haskell.org/package/mono-traversable-1.0.0.1包似乎能够实现所有常见的可折叠容器以及更多,例如,Bytestring
并且可以制作同质元组MonoFoldable
但不是Foldable
。我的问题是,我们会失去什么吗?MonoFoldable
我们没有的Foldable
,除了需要一些高级 GHC 功能之外,这对于实例编写者来说稍微有点棘手,并且可能会收到更难看的错误消息?
例如,是否有一些代码在使用时Foldable
编译但与MonoFoldable
例如,类型不是推断出来的?或者任何其他使客户端(而不是实例编写器代码)变得更加简单的东西Foldable
than MonoFoldable
?
你失去了参数性。
A type (Foldable f) => f a -> [a]
提供与以下显着不同的保证(MonoFoldable c) => c -> [Element c]
.
您可以使用免费的定理生成器来获得一些属性的想法,但作为一个简单的示例,前一种类型提供了输出中任何元素的属性must发生在输入中。后一种类型决不能保证此属性。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)