gpt4 book ai didi

arrays - 为什么未装箱的数组不是可折叠的实例?

转载 作者:行者123 更新时间:2023-12-03 14:50:43 25 4
gpt4 key购买 nike

在 Haskell 中找出要使用的正确数据容器可能有点棘手,对于我认为使用 UArray 的 2D 网格应用程序来说将是适当的。然而,据我所知UArray不是 foldable 的实例(不在 Data.Array.IArrayData.Array.Unboxed 中)。

是否有一个原因?我可以制作自己的辅助函数,但没有 foldable实例表明,也许我不应该。

最佳答案

我相信这样的实例是不可能的,因为它需要对数组所包含的数据类型进行额外的约束,而这在 Foldable 中是无法表达的。在 mono-traversable 中,我确实为未装箱和可存储的向量定义了 MonoFoldable 实例。

编辑 :要清楚,我所指的约束是 Data.Vector.Unbox 中的所有函数仅当 Vector 包含的值时才有效是 Unbox 的一个实例, 而 Foldable要求 foldMap , foldr等,为所有可能的类型定义(如列表、盒装向量等类型的情况)。 Foldable 没有办法typeclass 声明“包含的值必须满足这些约束。”与 MonoFoldable , 有。

关于arrays - 为什么未装箱的数组不是可折叠的实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36322904/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com