2009-04-13 50 views
3

何时使用它,为什么?'散列缺点'是什么意思?

我的问题来自于一句:“哈希利弊有一些类和它们的实例参考相等比较”

+0

你需要更具体的获得答案。是否有语言参与,你可以指向一个链接,等... – JaredPar 2009-04-13 14:26:25

+0

似乎是一个lisp /计划的事情 - 缺点是列表构造函数 – 2009-04-13 14:28:57

+0

感谢您的澄清尼尔,因为我丢了 – TStamper 2009-04-13 14:29:51

回答

2

把每个人的答案在一起:

ACL2(A计算逻辑的应用型的Common Lisp)是一种由编程语言,一阶逻辑中的可扩展理论和机械定理证明器组成的软件系统。

- Wiki ACL2

在计算机编程,利弊(发音/kɒnz/或/kɒns/)是在Lisp的编程语言的大多数方言的基本功能。 cons构造(因此是名称)存储对象,其中包含两个值或指向值的指针。这些对象被称为(cons)单元格,conses或(cons)对。在Lisp行话中,表达式“to cons x to y”意味着用(cons x y)构造一个新对象。由此产生的一对有左半部分,称为汽车(第一个元素),右半部分(第二个元素),称为cdr。

- Wiki Cons

在逻辑上,荣誉仅仅是为了利弊另一个名称,即,下面是一个ACL2定理:

(等于(荣誉XY)(利弊XY))

荣誉通常情况下比慢跑慢,因为在创造一个荣誉,试图看看是否已经存在与相同的汽车和司机的荣誉。这涉及到搜索和使用散列表。

- http://www.cs.utexas.edu/~moore/acl2/current/HONS.html

鉴于你的问题:

哈希利弊一些类和它们的实例参考相等比较

看来,hash cons是散列的过程一个LISP构造函数,通过平等比较来确定对象是否已经存在。

3

从Odersky的,勺子和凡纳斯(2007年),在斯卡拉编程,Artima新闻,p。 243:

通过缓存您在弱集合中创建的所有实例,散列类的实例。然后,任何时候你想要一个新的类的实例,你首先检查缓存。如果缓存中已经有一个元素与您即将创建的元素相同,则可以重新使用现有的实例。作为这种安排的结果,与equals()相等的任何两个实例也与参考相等相等。