Subject: bug#66615: 30.0.50; Inconsistent 'number-or-marker' type definition in the cl- machinery

From: Andrea Corallo <[email-masked]>
Date: Thu, 19 Oct 2023 04:56:42 -0400

[re-replaying as for some reason our responses didn't reach the list]

Stefan Monnier <[email-masked]> writes:

>> My question is, why do we consider 'number-or-marker' in the first place
>> a type if we support the or syntax in `cl-typep' like
>> (cl-typep 3 '(or marker number)) ?
>
> I'm not sure I can give a good answer in general, but I can tell you
> some reasons that explain some of what we see:
>
> - There is a `number-or-marker-p` primitive and `cl-typep` doesn't know
>   how to use it for `(or number marker)`.

Well we could just remove 'number-or-marker-p' 😃

> - method specializers (currently) can't be `(or number marker)` but can be
>   `number-or-marker`.

Okay this is more difficult to fix... :/

>> I'd like to fix this inconsistency in order to progress with my
>> development, originally I worked out the attached patch but I now
>> suspect that (unless there's a specific reason) we should just remove
>> 'number-or-marker' as a type entirely instead.
>
> I'd lean towards keeping it :-)

I see your point, actually my main drive is to make the situation more
coherent so I'm unblocked in the first place, just the method
specializer functionality is a blocker for removing 'number-or-marker'.

I think adding 'number-or-marker' where missing is probably the best
solution for now.

Thanks

  Andrea