簡體   English   中英

為什么未裝箱的數組不是可折疊的實例?

[英]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需要定義foldMapfoldr等。對於所有可能的類型(如列表,盒裝向量等類型的情況)。 Foldable類型類沒有辦法聲明“包含的值必須滿足這些約束”。 有了MonoFoldable ,就有了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM