Brodal等.在他们的ESA '06论文中证明了存在一个纯函数结构,具有对数时间搜索,更新和插入以及恒定时间合并.(注意我不是在谈论Brodal堆,它是一种不同的数据结构,广泛用于实现纯粹的功能优先级队列.)这似乎是一个非常有利可图的结果,应该导致高效的纯功能集和映射,但我没有看到他们在任何地方使用过:
containers
使用亚当斯树;如果Brodal树真的有这么好的结果,为什么它们没有被改编成主流的函数式编程语言标准库?事实上,我根本没有看到一个Brodal树的实现!
具体来说,这是因为:
可能知道,刚刚由new
字节码分配的对象没有被初始化,因此不是a java.lang.Object
.如果我进行运行时字节码操作并将该对象提供给方法,JVM会抱怨甚至崩溃(因为我给它的"东西"不是a java.lang.Object
).
所以,我的问题是,什么时候对象"完全"初始化,即成为java.lang.Object
?那是构造函数(<init>
):
java.lang.Object.<init>
?我有一个Stack_overflow
在我的OCaml程序错误最近.如果我打开回溯,我看到异常是由"原始操作""pervasives.ml"引发的,第270行.我进入了OCaml源代码,看到第270行定义了函数@
(即列表追加).我没有从回溯中获得任何其他信息,即使在我的程序中抛出异常也没有.我切换到字节码并尝试ocamldebug
,它没有帮助(没有产生回溯).
我认为这是一个非常奇怪的情况.在我的程序中我使用列表的唯一地方是(a)构建包含整数1到1000000的列表,(b)按顺序遍历RBT并将结果放入列表中,以及(c)打印整数列表包含表面上1000000的数字.我已经测试了所有函数,并且它们都没有包含无限循环,我认为1000000甚至不是一个巨大的数字.此外,我已经在Haskell(GHC),Scala和SML(MLton)中尝试了相当于我的程序,并且所有这些版本在相当短的时间内完美地工作.那么,问题是,可能会发生什么?我可以调试吗?