Am Fr., 9. Sept. 2022 um 23:13 Uhr schrieb John Cowan <[email protected]>: > > > > On Fri, Sep 9, 2022 at 4:22 PM Marc Nieper-Wißkirchen <[email protected]> > 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.)
