5.9.1 Списки свойств и списки ассоциаций

Списки ассоциаций (см. Списки ассоциаций) очень похожи на списки свойств. В отличие от списков ассоциаций, порядок пар в списке свойств не имеет значения, поскольку имена свойств должны быть уникальными.

Списки свойств лучше, чем списки ассоциаций, для прикрепления информации к различным именам функций или переменным Lisp. Если ваша программа хранит всю такую информацию в одном списке ассоциаций, ей, как правило, придется каждый раз искать во всем этом списке, когда она проверяет наличие ассоциации для определенного имени функции или переменной Lisp, что может быть медленно. В отличие от этого, если вы храните ту же информацию в списках свойств самих имен функций или переменных, каждый поиск будет сканировать только длину одного списка свойств, который обычно короткий. Вот почему документация для переменной записывается в свойстве с именем variable-documentation. Компилятор байт также использует свойства для записи функций, требующих специальной обработки.

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