GNU bug report logs - #77725
31.0.50; Add support for types accepted by `cl-typep' to cl-generic?

Previous Next

Package: emacs;

Reported by: David Ponce <da_vid <at> orange.fr>

Date: Fri, 11 Apr 2025 07:16:01 UTC

Severity: normal

Found in version 31.0.50

Full log


View this message in rfc822 format

From: Stefan Monnier <monnier <at> iro.umontreal.ca>
To: David Ponce <da_vid <at> orange.fr>
Cc: 77725 <at> debbugs.gnu.org, Eli Zaretskii <eliz <at> gnu.org>
Subject: bug#77725: 31.0.50; Add support for types accepted by `cl-typep' to cl-generic?
Date: Sun, 27 Apr 2025 08:59:24 -0400
>> Exactly, I fully agree, the question is "how to keep track of the
>> children"?
>
> You could approximate it with `after-load-functions`.  Or, with the
> proposed patch, you could use an advice on `cl--type-deftype`.  Once you
> do that, you won't need to break circularity in `cl-types-of`.

I think what I was trying to say all along is:
the circularity you're trying to break doesn't come from `cl-deftype` or
`cl-types-of` but from your impredicative definition of `T1`.
So it'd be best to fix it there:

    (cl-deftype T1 ()
      `(satisfies ,(lambda (o) (memq 'T1 (cl-types-of o)))))

=>

    (defvar my-pending-T1-check (make-symbol "void"))

    (cl-deftype T1 ()
      `(satisfies
        ,(lambda (o)
           (and (not (eq o my-pending-T1-check))
                (let ((my-pending-T1-check o))
                  (memq 'T1 (cl-types-of o)))))))


- Stefan





This bug report was last modified 10 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.