Что значит «хэшировать минусы»? - PullRequest
3 голосов
/ 13 апреля 2009

Когда его использовать и почему?

Мой вопрос исходит из предложения: "хеш-минусы с некоторыми классами и сравнение их экземпляров с ссылочным равенством"

Ответы [ 3 ]

3 голосов
/ 05 декабря 2010

От Odersky, Spoon and Venners (2007), Программирование в Scala , Artima Press, p. 243

Вы хэшируете экземпляры класса, кэшируя все созданные вами экземпляры в слабой коллекции. Затем, в любое время, когда вам нужен новый экземпляр класса, вы сначала проверяете кеш. Если в кеше уже есть элемент, равный тому, который вы собираетесь создать, вы можете повторно использовать существующий экземпляр. В результате такой компоновки любые два экземпляра, равные equals (), также равны ссылочному равенству.

3 голосов
/ 13 апреля 2009

Собираем ответы всех вместе:

ACL2 (вычислительная логика для аппликативного Common Lisp) - это система программного обеспечения, состоящая из языка программирования, расширяемой теории в логике первого порядка и механического средства доказательства теорем.

- Wiki ACL2

В компьютерном программировании cons (произносится / ˈkɒnz / или / ˈkɒns /) является фундаментальной функцией в большинстве диалектов языка программирования Лисп. cons создает (отсюда и имя) объекты памяти, которые содержат два значения или указатели на значения. Эти объекты называются (cons) ячейками, conses или (cons) парами. В жаргоне Lisp выражение «превратить x в y» означает создание нового объекта с помощью (cons x y). Результирующая пара имеет левую половину, называемую автомобилем (первый элемент), и правую половину (второй элемент), называемую cdr.

- Вики Минусы

Логически, hons - это просто другое название для cons, т. Е. Следующая теорема ACL2:

(равно (хон х у) (минус х у))

Hons обычно работает медленнее, чем cons, потому что при создании hons делается попытка выяснить, существует ли hons уже с той же машиной и cdr. Это включает в себя поиск и использование хеш-таблиц.

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

Ваш вопрос:

хеширует минусы с некоторыми классами и сравнивает их экземпляры с ссылочным равенством

Похоже, что hash cons - это процесс хеширования конструктора LISP, чтобы определить, существует ли объект, путем сравнения на равенство.

2 голосов
/ 13 апреля 2009

http://en.wikipedia.org/wiki/Hash_cons теперь перенаправляет.

Это con с с хешированием, чтобы позволить eq (справочное) сравнение вместо глубокого. Это более эффективно для памяти (поскольку идентичные объекты хранятся в виде ссылок) и, конечно, быстрее, если сравнение является обычной операцией.

http://www.cs.utexas.edu/~moore/acl2/current/HONS.html описывает реализацию для Lisp.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...