Если выражение в вашей программе выдает значение, содержащее циклически связанную структуру списка, вы можете получить ошибку, когда Edebug попытается его напечатать.
Один из способов справиться с циклическими структурами — установить
print-length или print-level, чтобы
обрезать печать. Edebug делает это за вас; он привязывает print-length
и print-level к значениям переменных edebug-print-length
и edebug-print-level (при условии, что они имеют не-nil
значения). См. Переменные, влияющие на вывод.
Если не-nil, Edebug привязывает print-length к этому
значению при печати результатов. Значение по умолчанию — 50.
Если не-nil, Edebug привязывает print-level к этому
значению при печати результатов. Значение по умолчанию — 50.
Вы также можете более информативно печатать циклические структуры и структуры,
разделяющие элементы, при привязке print-circle к не-nil
значению.
Вот пример кода, который создает циклически связанную структуру:
(setq a (list 'x 'y)) (setcar a a)
Если print-circle не-nil, функции печати (например,
prin1) будут печатать a как '‘#1=(#1# y)’.
Нотация '‘#1=’' помечает следующую структуру меткой '‘1’',
а нотация '‘#1#’' ссылается на ранее помеченную структуру. Эта
нотация используется для любых общих элементов списков или векторов.
Если не-nil, Edebug привязывает print-circle к этому
значению при печати результатов. Значение по умолчанию — t.
Для получения более подробной информации о том, как можно настроить печать, см. Функции вывода.