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

欢迎!请查看关于页面以获得更多关于如何使用该网站的信息。

0
core.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 找到相关的问题页面,所以我想在这里留下一个问题 hoping 获得帮助。

2 答案

+1

被选中
 
最佳答案

您正在使用 core.rrb-vector 的哪个版本?某些问题在最近的版本中都得到了修复。最新的发布版本可以在 README 中的“已发布版本”链接找到:[https://github.com/clojure/core.rrb-vector/](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年Advent of Code问题#9,你似乎正在解决。早期的错误已被修复,但你似乎发现了我没有见过的另一个错误。

坦白说,我有点怀疑能否想出一个方法让 core.rrb-vector 既是正确的,又能满足 RRB 树声称能实现的运行时。

我对基于B树而不是RRB树编写类似库的想法有一个想法,但这主要是我花费大量时间和精力思考和撰写的,但我还没有编写代码,所以这个方法不能帮助你,除非你喜欢编写这样的库。

同时,有一个包含io.lacuna.bifurcan.List类的Java库,_可能_比core.rrb-vector有更少的错误,但在这方面没有保证:https://github.com/lacuna/bifurcan
首先,我很高兴知道我遇到了这个错误,因为我错误地使用了这个库,并很高兴能够报告一个未发现的错误。

我希望这个问题能够尽快解决。我真的希望在没有担心的情况下使用这个库。事实上,我对计算的性能非常满意。

感谢你让我了解另一个库io.lacuna.bifurcan.List。我将尝试使用它。

再次感谢你的工作!
+1
by

请知悉,这是提问的正确位置,如有必要,我们将向内部jira系统提交问题。

by
感谢您的信息!
...