Am So., 13. Juni 2021 um 12:40 Uhr schrieb Lassi Kortela <xxxxxx@lassi.io>:
> Show me any attempt and I claim that I will be able to show you its
> particular flaw.

OK, so there is more than one separate flaw.

> No; they are not shown to people. That's why the underlying record type
> is assumed to be opaque. The wording doesn't force the implementation to
> actually define a record type. If it wants so, it could use the
> following definition (assuming R6RS):
>
> (define-record-type fxmapping
>    (sealed #t) (opaque #t)
>    (nongenerative fxmapping-2bf340e5-304e-436e-8478-926c7040f3f)
>    (fields ...)
>    ...)

OK, in that case a UUID seems fine.

>     Another alternative is to allocate human-readable IDs and track them in
>     a table in <https://registry.scheme.org/
>
> This solution has two obvious disadvantages:
>
> (1) It needs a central registry outside the SRFI process.
> (2) It doesn't treat every SRFI fairly. Once a human-readable ID like
> "mapping" is registered, it can hardly be reused by a later SRFI. See
> the rationale of SRFI 97 why it is, say, (srfi :41 streams) and not
> (srfi streams).

Any reason not to simply use things like "srfi-146-mapping" and
"srfi-224-mapping" as the unique names? If the same type is used in more
than one SRFI, it could be numbered after the first SRFI it appeared in.

Four reasons:

(1) It would be one more convention everyone has to agree to.
(2) It has no benefit because the uid is hidden from the user anyway.
(3) It clashes with the earlier convention of record-name-UUID proposed in R6RS.
(4) It breaks down should one SRFI want to define two different record types with the same name (unlikely but I not completely).