The following causes a warning (unused variable 'b'): (pcase '(1 2) ((and `(,a ,b) (guard (equal a b))) a)) This is due to pcase let-binding 'a' twice; once around the guard test ('(equal a b)'), and once around the body ('a').