bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#77725: 31.0.50; Add support for types accepted by `cl-typep' to cl-g


From: Stefan Monnier
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
User-agent: Gnus/5.13 (Gnus v5.13)

>> 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






reply via email to

[Prev in Thread] Current Thread [Next in Thread]