2009-04-13 15 views
3

Wann und warum?Was bedeutet es, "Nachteile zu hacken"?

Meine Frage kommt aus dem Satz: "Hash-cons mit einigen Klassen und deren Instanzen mit Bezug Gleichheit vergleichen"

+0

Sie müssen viel genauer sein, um eine Antwort zu erhalten. Gibt es eine Sprache beteiligt, können Sie auf einen Link verweisen, etc ... – JaredPar

+0

scheint ein Lisp/Schema Sache zu sein - Nachteile ist der Listenersteller –

+0

Danke für die Klarstellung Neil, weil ich – TStamper

Antwort

2

Antworten der jeder Putting zusammen:

ACL2 (A Computational Logic für Applicative Common Lisp) ist ein Softwaresystem, das aus einer Programmiersprache, einer erweiterbaren Theorie in einer Logik erster Ordnung und einem mechanischen Theorembeweiser besteht.

- Wiki ACL2

bei der Computerprogrammierung, cons (ausgesprochen/kɒnz/oder/kɒns /) ist eine grundlegende Funktion in den meisten Dialekten der Lisp Programmiersprache. cons konstruiert (daher der Name) Speicherobjekte, die zwei Werte oder Zeiger auf Werte enthalten. Diese Objekte werden als (Cons) -Zellen, Cones oder Cons-Paare bezeichnet. Im Lisp-Jargon bedeutet der Ausdruck "für x auf y contrahieren", ein neues Objekt mit (cons x y) zu konstruieren. Das resultierende Paar hat eine linke Hälfte, die als das Auto (das erste Element) bezeichnet wird, und eine rechte Hälfte (das zweite Element), die als cdr bezeichnet wird.

-Wiki Cons

Logisch hons lediglich cons ein anderer Name ist, das heißt, ist das folgende ein ACL2 Theorem:

(equal (hons xy) (cons xy))

Hons im Allgemeinen läuft langsamer als Nachteile, weil bei der Erstellung eines Hons versucht wird, ob ein Hons bereits mit dem gleichen Auto und Cdr existiert. Dies beinhaltet die Suche und die Verwendung von Hash-Tabellen.

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

Ihre Frage Gegeben:

Hash-cons mit einigen Klassen und die Instanzen mit Bezug Gleichheit vergleichen

Es scheint, dass hash cons ist der Prozess des Hashing ein LISP-Konstruktor, um festzustellen, ob ein Objekt bereits über einen Gleichheitsvergleich existiert.

+1

hab einfach folgendes gefunden: http://en.wikipedia.org/wiki/Hash_consing –

3

Von Odersky, Löffel und Venners (2007), Programmierung in Scala, Artima Press, p. 243:

Sie Hash-Instanzen einer Klasse durch Zwischenspeichern aller Instanzen, die Sie in einer schwachen Sammlung erstellt haben. Wann immer Sie eine neue Instanz der Klasse wünschen, überprüfen Sie zunächst den Cache. Wenn der Cache bereits über ein Element verfügt, das demjenigen entspricht, das Sie erstellen möchten, können Sie die vorhandene Instanz erneut verwenden.Als Ergebnis dieser Anordnung sind alle zwei Instanzen, die mit equals() gleich sind, auch gleich der Referenzgleichheit.