Если спецификация не совпадает в какой-либо момент, это не обязательно означает, что будет сигнализирована синтаксическая ошибка; вместо этого произойдет обратное отслеживание, пока не будут исчерпаны все альтернативы. В конечном итоге каждый элемент списка аргументов должен быть совмещен с каким-либо элементом в спецификации, и каждый требуемый элемент в спецификации должен соответствовать какому-либо аргументу.
Когда обнаружена синтаксическая ошибка, она может быть не сообщена до гораздо
более позднего времени, после того как будут исчерпаны альтернативы более высокого уровня, и с позицией, расположенной дальше от реальной ошибки. Но если обратное отслеживание отключено при возникновении ошибки, оно может быть сообщено немедленно. Обратите внимание, что обратное отслеживание также автоматически включается в нескольких ситуациях: когда новая альтернатива устанавливается с помощью &optional,
&rest, или &or, или в начале обработки подсписка, группы или косвенной спецификации. Эффект включения или отключения
обратного отслеживания ограничен оставшейся частью обрабатываемого уровня и более низкими уровнями.
Обратное отслеживание отключается при сопоставлении любой из
форм спецификаций (то есть form, body, def-form, и
def-body). Эти спецификации совпадут с любой формой, поэтому любая ошибка
должна быть в самой форме, а не на более высоком уровне.
Обратное отслеживание также отключается после успешного сопоставления
цитируемого символа, спецификации строки или ключевого слова &define, поскольку это обычно указывает на распознанную конструкцию. Но если у вас есть набор альтернативных конструкций, которые начинаются с одного и того же символа, вы обычно можете обойти это ограничение, вынеся символ за пределы альтернатив, например, ["foo" &or [first case] [second case] ...].
Большинство потребностей удовлетворяется этими двумя способами автоматического отключения
обратного отслеживания, но иногда полезно явно отключить обратное отслеживание, используя спецификацию gate. Это полезно, когда вы знаете, что никакие более высокие альтернативы не могут быть применены. См. пример спецификации let.