小编xuq*_*q01的帖子

"Brodal搜索树"真的已经实用了吗?

Brodal等.在他们的ESA '06论文中证明了存在一个纯函数结构,具有对数时间搜索,更新和插入以及恒定时间合并.(注意我不是在谈论Brodal堆,它是一种不同的数据结构,广泛用于实现纯粹的功能优先级队列.)这似乎是一个非常有利可图的结果,应该导致高效的纯功能集和映射,但我没有看到他们在任何地方使用过:

  • Haskell containers使用亚当斯树;
  • OCaml标准库使用AVL树;
  • Scala的不可变排序映射使用红黑树实现.

如果Brodal树真的有这么好的结果,为什么它们没有被改编成主流的函数式编程语言标准库?事实上,我根本没有看到一个Brodal树的实现!

具体来说,这是因为:

  • 它们非常难(或实际上几乎不可能)正确实施;
  • 常数非常大,实际收益似乎很小;
  • 其他原因;
  • 或上述的组合?

ocaml haskell functional-programming scala data-structures

19
推荐指数
1
解决办法
316
查看次数

Java对象何时完全初始化?

可能知道,刚刚由new字节码分配的对象没有被初始化,因此不是a java.lang.Object.如果我进行运行时字节码操作并将该对象提供给方法,JVM会抱怨甚至崩溃(因为我给它的"东西"不是a java.lang.Object).

所以,我的问题是,什么时候对象"完全"初始化,即成为java.lang.Object?那是构造函数(<init>):

  • 叫做?
  • 回报?
  • 它返回前的一段时间?
  • 打电话java.lang.Object.<init>
  • 还有其他时间吗?

java jvm bytecode bytecode-manipulation

5
推荐指数
1
解决办法
282
查看次数

OCaml:pervasives.ml中的Stack_overflow异常

我有一个Stack_overflow在我的OCaml程序错误最近.如果我打开回溯,我看到异常是由"原始操作""pervasives.ml"引发的,第270行.我进入了OCaml源代码,看到第270行定义了函数@(即列表追加).我没有从回溯中获得任何其他信息,即使在我的程序中抛出异常也没有.我切换到字节码并尝试ocamldebug,它没有帮助(没有产生回溯).

我认为这是一个非常奇怪的情况.在我的程序中我使用列表的唯一地方是(a)构建包含整数1到1000000的列表,(b)按顺序遍历RBT并将结果放入列表中,以及(c)打印整数列表包含表面上1000000的数字.我已经测试了所有函数,并且它们都没有包含无限循环,我认为1000000甚至不是一个巨大的数字.此外,我已经在Haskell(GHC),Scala和SML(MLton)中尝试了相当于我的程序,并且所有这些版本在相当短的时间内完美地工作.那么,问题是,可能会发生什么?我可以调试吗?

stack-overflow debugging ocaml

0
推荐指数
1
解决办法
141
查看次数