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"
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"
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.
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.
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.
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.
hab einfach folgendes gefunden: http://en.wikipedia.org/wiki/Hash_consing –
http://en.wikipedia.org/wiki/Hash_cons leitet jetzt um.
Es ist con
s mit Hashing zu eq
(Referenz) Vergleich statt einer tiefen. Dies ist effizienter für den Speicher (weil identische Objekte als Referenzen gespeichert werden) und ist natürlich schneller, wenn der Vergleich eine übliche Operation ist.
http://www.cs.utexas.edu/~moore/acl2/current/HONS.html beschreibt eine Implementierung für Lisp.
http://en.wikipedia.org/wiki/Cons –
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.
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
scheint ein Lisp/Schema Sache zu sein - Nachteile ist der Listenersteller –
Danke für die Klarstellung Neil, weil ich – TStamper