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

2024-01-30

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

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


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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么未装箱的数组不是可折叠的实例? 的相关文章

  • 将 1d 数组索引转换为 3d 数组索引?

    我有一个 int 我想将其转换为 3d 数组索引的 3 个 int 这是我正在处理的示例 byte array new byte XSize YSize ZSize int i 0 other code array cur other co
  • Haskell / cabal 包的解决方法受到 Nix 和 Cabal 的限制?

    我最近开始开发反射平台 https github com reflex frp reflex platform 有一些额外的配置类似于优秀的反射项目骨架 https github com ElvishJerricco reflex proj
  • JavaScript 数组 every 和 some 之间的区别

    我看到在给定的测试中两者都返回 true 或 false https developer mozilla org en US docs Web JavaScript Reference Global Objects Array some h
  • 查找数组中的重叠数据

    我们正在编写一个 C 应用程序 它将有助于删除不必要的数据重复器 只有在以下情况下才可以移除中继器 all它接收到的数据被其他中继器接收 我们第一步需要做的事情解释如下 例如 我有 int 数组的集合 A 1 2 3 4 5 b 2 4 6
  • Python 比编译的 Haskell 更快?

    我有一个用 Python 和 Haskell 编写的简单脚本 它读取包含 1 000 000 个换行符分隔的整数的文件 将该文件解析为整数列表 对其进行快速排序 然后将其写入已排序的不同文件中 该文件与未排序的文件具有相同的格式 简单的 这
  • 在 Swift 中使用 NSCoding 归档可选结构数组?

    我已经在 Obj C 中完成了大量 NSCoding 归档 但我不确定它如何处理 Swift 中的结构 也不确定它如何处理具有可选值的数组 这是我的代码 public struct SquareCoords var x Int y Int
  • 并行 Haskell - GHC GC 火花

    我有一个正在尝试并行化的程序 带有可运行代码的完整粘贴here http lpaste net 101528 我进行了分析 发现大部分时间都花在findNearest这本质上是一个简单的foldr超过一个大Data Map findNear
  • 这是 unsafeCoerce 的安全使用吗?

    我遇到的情况是 我目前正在使用极其可怕的函数 unsafeCoerce 幸运的是 这并不是为了任何重要的事情 但我想知道这是否是该函数的安全使用 或者是否有其他方法可以解决其他人知道的这个特定问题 我的代码类似于以下内容 data Toke
  • using 可用于为数组键入别名吗?

    我不确定我的措辞是否正确 因为这有点奇怪 基本上我发现了一些这样的代码 template
  • Python 中 a -= b 和 a = a - b 之间的区别

    我最近申请了this https stackoverflow com questions 30379311 fast way to take average of every n rows in a npy array对矩阵的每 N 行进行
  • 将数组复制到动态分配的内存

    我的代码可以正常工作 但我觉得好像有一种更快的方法可以做到这一点 特别是在我的函数副本中 这是我的代码 这能再快一点吗 顺便说一句 这是 C 语言 另外 当我从函数返回 cpy 时 它是否会删除动态内存 因为它超出了范围 我不想发生内存泄漏
  • 如何测试自定义 StateT 的 Monad 实例?

    我正在学习 Monad Transformers 其中一个练习要求实现 Monad 实例StateT 我想使用以下方法测试我的实现是否符合 Monad 法则validity https github com NorfairKing vali
  • Mac OSX 10.7.4,Xcode 4.4.1,没有 头文件?

    我正在编写一个程序 它将使用 C 标准库的数组容器来保存一些对象 但是 每当我尝试在程序中包含以下代码行时 include
  • 如何自动转换十六进制代码以将其用作 Java 中的 byte[]?

    我这里有很多十六进制代码 我想将它们放入 Java 中 而不需要向每个实体附加 0x 喜欢 0102FFAB 和我必须执行以下操作 byte test 0x01 0x02 0xFF 0xAB 我有很多很长的十六进制代码 有什么办法可以自动做
  • Cabal 无法安装依赖项,但如果直接询问可以安装它们

    我发现 Cabal 反复出现一个非常奇怪的问题 它影响了我获得可重复的 Haskell 构建的能力 我有一个带有沙箱的阴谋集团项目 如果我做cabal install 我收到以下形式的错误 Y failed during the build
  • 来自数据类型的 Haskell 随机数

    我对 Haskell 还很陌生 我有一个数据类型 data Sentence Prop Int No Sentence And Sentence Or Sentence deriving Eq 我已经为它写了一个 Show 实例 然而 无论
  • Haskell 中的内部爆炸模式是否总是强制使用外部构造函数?

    在 Haskell 中 是否存在对于数据类型 LANGUAGE BangPatterns import Control DeepSeq data D D Int 实例 instance NFData D where rnf D 与具有另一个
  • PySpark - RDD 到 JSON

    我有一个 Hive 查询返回以下格式的数据 ip category score 1 2 3 4 X 5 10 10 10 10 A 2 1 2 3 4 Y 2 12 12 12 12 G 10 1 2 3 4 Z 9 10 10 10 10
  • Cabal:使用源代码构建目录

    我有一个src目录 在这个目录中我有Main hs文件和Test目录 在里面Test我有的目录Test hs模块 我需要用 cabal 来编译它 在我的阴谋集团文件中 我有 Executable main hs or lhs file co
  • 为什么 char 数组需要 strcpy 而 char star 不需要 - 在 C 中使用结构

    我对这段代码有一个误解 typedef struct EXP int x char name char lastName 40 XMP main XMP a a name eaaa a lastName strcpy a lastName

随机推荐