2024 年 Clojure 状态调查! 中分享你的想法。

欢迎!请参阅 关于 页面了解更多关于这样运作的信息。

0
核心.rrb-vector

我在尝试 aoc2018 d9 时遇到了这个错误。似乎当向量中元素超过 2M 时,这个错误就会出现。

Execution error (ArrayIndexOutOfBoundsException) at clojure.core.rrb-vector.rrbt/slice-left$fn (rrbt.clj:393).
Index 33 out of bounds for length 33

      rrbt.clj:  393  clojure.core.rrb-vector.rrbt/slice-left/fn
      rrbt.clj:  392  clojure.core.rrb-vector.rrbt/slice-left
      rrbt.clj:  375  clojure.core.rrb-vector.rrbt/slice-left
      rrbt.clj: 1098  clojure.core.rrb-vector.rrbt.Vector/slicev
rrb_vector.clj:   83  clojure.core.rrb-vector/subvec
rrb_vector.clj:   73  clojure.core.rrb-vector/subvec

我在 GitHub 中找不到问题页面,所以我想在这里提出一个问题来寻求帮助。

2 个答案

+1

被选中
 
最佳答案

你在使用 core.rrb-vector 的哪个版本?一些错误已在较新版本中修复。最新版本可以在 README 中的“已发布版本”链接找到:https://github.com/clojure/core.rrb-vector/

如果你能够用最新版本复现这个问题,我会感兴趣了解怎样进行的。这个库中至少还有一个已知的错误,我不确定如何修复,但不惊讶还有其他我看都没看到的错误。

哇,感谢您的回答。我目前正在使用最新版本 0.1.2。如果您希望我尝试之前的版本,我很乐意。目前,我可以使用以下代码重现该问题。抱歉我的代码很糟糕 ;)

您可以在注释块内的第 94 行重现,虽然运行需要一些时间。 https://github.com/mattdamon108/first-clojure/blob/master/aoc201809.clj
我认为最新版本中的错误最少,所以不建议使用旧版本。我在自己的系统上成功重现了这个问题。当我阅读您的代码时,我觉得有点好笑,因为对 core.rrb-vector 的一个早期错误报告也是针对一个弹珠游戏,可能有人编写代码来解决您似乎正在解决的相同 2018 年圣诞编程问题 #9。该早期错误已经修复,但您似乎发现了一个我没有见过的另一个错误。

坦白说,我有点怀疑能否找到使 core.rrb-vector 既能保持(a)正确,又能达到 RRB 树声称的运行时的方式。

我有一个想法,基于 B 树而不是 RRB 树来编写类似的库,但这主要是一个我花费很多时间去思考和写作的想法,但我还没有编写代码,所以这种方法不会帮助您,除非您喜欢编写这样一个库的想法。

同时,有一个包含 io.lacuna.bifurcan.List 类的 Java 库,它可能比 core.rrb-vector 少一些错误,但在这个点上没有保证: https://github.com/lacuna/bifurcan
首先,我很高兴知道我是因为使用这个库的方式不正确而遇到了这个错误,也很高兴能够报告一个新发现的错误。

我希望这个问题能很快得到解决。我真的很想使用这个库而不用担心。实际上我对计算的性能非常满意。

感谢您让我了解另一个库 io.lacuna.bifurcan.List。我会尝试它的。

再次感谢您的辛勤工作!
+1
by

仅供参考,这是一个正确的问题所在,如果需要,我们将在内部jira系统中提交一个问题。

by
感谢您的信息!
...