![](/img/trans.png)
[英]What Haskell representation is recommended for 2D, unboxed pixel arrays with millions of pixels?
[英]Why are unboxed arrays not an instance of foldable?
确定要使用的正确数据容器在Haskell中可能有点棘手,因为我认为使用UArray
2D网格应用程序是合适的。 但是,据我所知, UArray
不是foldable
的实例(不在Data.Array.IArray
也不在Data.Array.Unboxed
)。
是否有一个原因? 我可以创建自己的辅助函数,但缺少foldable
实例表明我可能不应该这样做。
我相信这样的实例是不可能的,因为它需要数组包含的数据类型中的额外约束,这不能用Foldable表示。 在单遍历中,我确实为未装箱和可存储的矢量定义了MonoFoldable实例。
编辑 :要清楚,我所指的约束是Data.Vector.Unbox
中的所有函数只有在Vector
包含的值是Unbox
的实例时才有效,而Foldable
需要定义foldMap
, foldr
等。对于所有可能的类型(如列表,盒装向量等类型的情况)。 Foldable
类型类没有办法声明“包含的值必须满足这些约束”。 有了MonoFoldable
,就有了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.