Subject: 30.0.50; pcase-lambda (with "and" and "guard") does not work as expected
From: Mekeor Melire <[email-masked]>
To: [email-masked]
Date: Wed, 12 Jun 2024 08:40:54 +0000
List-Id: <debbugs-submit.debbugs.gnu.org>

I was expecting these two expressions to evaluate to the same value.
First, we call `pcase' on a value with a pattern involving `and' and
`guard':

    (pcase "value"
      ((and v (guard (string= "not-value" v))) v))
    ;; => nil

Second, let's use the same value and pattern, but this time using
`pcase-lambda':

    (funcall
      (pcase-lambda
        ((and v (guard (string= "not-value" v)))) v)
      "value")
    ;; => "value"

Am I missing something or is this a bug?

In GNU Emacs 30.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version
3.24.41, cairo version 1.16.0).