11.4 Условный оператор сопоставления шаблонов

Помимо четырех основных условных форм, Emacs Lisp также имеет условную форму сопоставления шаблонов — макрос pcase, гибрид cond и cl-case (см. Условные операторы в Common Lisp Extensions), который преодолевает их ограничения и вводит стиль программирования сопоставления шаблонов. Ограничения, которые преодолевает pcase, следующие:

По своей концепции макрос pcase заимствует фокус на первом аргументе у cl-case и поток обработки частей у cond, заменяя condition обобщением проверки равенства, которое является вариантом сопоставления шаблонов, и добавляя возможности для краткого выражения предиката части и организации совместного использования привязок между предикатом части и body-forms.

Краткое выражение предиката называется шаблоном. Когда предикат, вызванный со значением первого аргумента, возвращает не-nil, мы говорим, что «шаблон соответствует значению» (или иногда «значение соответствует шаблону»).