为什么MVector不可折叠?

我可以理解为什么MVector类型(来自vector包)没有实例化Foldable类型类吗?我想人们经常需要迭代向量。我可以freezeData.Vector,然后进行迭代。但我讨厌改变这些东西,好像我们对String, Text, Bytestrings 等做得不够。

就我而言,我想打印每个元素。

回答

从可变向量读取需要在关联的 monad 中执行效果 -IOST s. 但是Foldable要求你能够给出一个纯粹的答案;如果有一个实例,我们至少必须能够实现

foldr :: (a -> b -> b) -> b -> MVector s a -> b

即使调用者选择了一个b没有提到IO或 的ST。哎呀!


以上是为什么MVector不可折叠?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>