![](/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.