2014-12-27 2 views

ответ

6

Association lists являются наиболее часто используемыми ассоциативными контейнерами в elisp. Это всего лишь список клеток с ключевыми значениями, подобных этому ((key . value)). Вы можете использовать функцию assoc, чтобы получить значение, соответствующее ключу, и rassoc, чтобы получить ключ с требуемым значением.

Elisp поставляется со встроенной функцией mapcar который делает карта, но AFAIK нет в наличии fold объект. Вы можете эмулировать его с помощью любого из предусмотренных циклов. Однако лучшим решением является использование cl-lib и переход на землю CommonLisp. В частности, it suppliescl-mapcar и cl-reduce.

+0

pradhan, чтобы получить значение с карты, можно ли использовать assq (или) assoc? –

+0

Обычно 'assoc' - это то, что имеет смысл, потому что сравнивает ключи с' equal'. С другой стороны, 'assq' сравнивается с' eq', который требует, чтобы он был тем же самым объектом в памяти. – Pradhan

7

Кроме списков ассоциаций, (чьи алгоритмическая сложность OK для небольших таблиц, но не для крупных), есть хэш-таблицы, можно построить с make-hash-table и puthash, или если вы предпочитаете непосредственные значения, вы можете написать их как #s(hash-table data a 1 b 2) ,

Смежные вопросы