Re: Chicken implementation
Marc Nieper-WiÃkirchen 10 Sep 2022 07:30 UTC
Am Fr., 9. Sept. 2022 um 23:13 Uhr schrieb John Cowan <xxxxxx@ccil.org>:
>
>
>
> On Fri, Sep 9, 2022 at 4:22 PM Marc Nieper-Wißkirchen <xxxxxx@gmail.com> wrote:
>
>>
>> No, if `procedure/tag?` returns `#t`, the procedure `procedure-tag` must not crash.
>
>
> But it says "It is an error if proc is not a tagged procedure". So "it is an error" means the behavior is undefined (which may include crashing), per R[57]RS; in R6RS the term "it is an error" is not defined.
Yes, so `procedure/tag?` must only return `#t` on tagged procedures.
My initial comment that it can return `#t` on all procedures was in
the context of your Chicken implementation where all procedures are
tagged (possibly with some unspecified value). On the other hand, for
other implementations where tagged procedures form a strict subset of
non-tagged procedures, `procedure/tag?` must reflect this.
(In R6RS, an assertion violation would be raised per section 5.4 of the report.)