Comments on draft 6 Wolfgang Corcoran-Mathe (15 Sep 2026 01:17 UTC)
Re: Comments on draft 6 D Guthrie (21 Sep 2026 13:46 UTC)

Re: Comments on draft 6 D Guthrie 21 Sep 2026 13:46 UTC

Hi Wolfgang, I'll reply inline…

> On 15 Sep 2026, at 02:16, Wolfgang Corcoran-Mathe <xxxxxx@sigwinch.xyz> wrote:
>
> Hi Duncan,
>
> Thanks for working so hard on this SRFI.  It is more than I can keep in
> my head, unfortunately, but it has clearly been written with care.  I
> have a few minor issues:
>
> 1. Pedantry: The R7RS example in the “R6RS Conditions” section uses
> square brackets, which are “reserved for possible future extensions”
> by R7-small.  Of course it’s clear what they mean, but, strictly
> speaking, they make the example invalid R7RS-small code.

I didn't realise - the next draft can modify the examples to use regular
brackets.

> 2. Awkward argument names: Why isn’t the common ‘nonempty-ini?’
> argument called ‘nonempty-initial?’ or ‘nonempty-init?’ instead?
> (Is this a tribute to the ‘creat’ of UNIX infamy?)
>
> 3. I don’t understand why there are two-argument versions of
> ‘update-iri-authority’ and ‘update-uri-authority’.  If I understand
> correctly, ‘(update-iri-authority IRI #f)’ is the only valid use of the
> this form, and it’s equivalent to ‘(update-iri-authority IRI #f #f #f)’.
> It seems to me the #f argument isn’t doing anything.  You could get rid
> of the two-argument version, or replace it with a one-argument version,
> ‘(update-iri-authority IRI)’.
>
> In passing, I note that only the two-argument version of
> ‘update-uri-authority’ is mentioned in the “URI programming interface”
> list.

It's for parity with iri-authority. To be specific, this procedure exists
because it's quite widespread in existing libraries, which tend to treat
authority as a single component (in Chicken it's a record) consisting of
the three. The single-value case of both getter and setter can just be
ditched.

> 4. The types of some arguments are specified neither in the procedure
> spec. nor in the “Argument restrictions and convention” (that section
> name needs a final ‘s’, too):
>
>  * update-iri-authority: *user*, *host*, & *port* are of unspecified
>    type, except we know they may be false.
>
>  * resolve-iri, etc.: *base* (clarified by the ‘relativize-iri’ spec.,
>    possibly: that procedure’s *base* argument must be non-relative,
>    which I suppose applies to all *base* arguments.)
>
>  * encode-string, etc.: *char-set*.  Of course character sets are
>    discussed later, but it wouldn’t hurt to clarify the type of this
>    argument.  (Most likely it should be added to the “restrictions &
>    conventions”.  It’s used often enough.)
>
> 5. What does ‘path-ref’ do when the index argument is invalid?  The
> example (non-normative, I suppose) says “ERROR”.

I'll clarify (4) and (5).

> 6. General: (srfi :275 path) seems very large; in particular, there are
> a lot of constructors.  I’m probably missing something, but are all the
> ‘vector->’ constructors needed in addition to the more general
> ‘build-path’?  (The usefulness of the ‘string->’ constructors I
> appreciate.)  And are all those predicates needed, too?

The main argument for providing the predicates is so that library users
can implement their own normalization procedures. There is a need in
these cases to check that a path which was produced is consistent with
the RFCs.
I don't think we want to get rid of these as it's very tricky to n
ormalize IRIs and URIs and preserve internal consistency.

The vector constructors exist because the path segment procedures return
a vector. One option might be just to modify `path-segments` and similar
to return lists of segments, then `build-path` is the constructor,
although then we'd presumably come up with list conversion procedures.
I'm not really sure about this one.

I agree that the `rfc-` prefixed constructors can largely be eliminated,
as they're not useful in the same way as the predicates are in
normalization.

> * * *
>
> Thanks again for all your work.  I’m probably missing a lot of
> important details, but hopefully the other, more *RI-knowledgeable
> commentators have gotten to them.

Well, thank you for your review. This is the first proposal I've written
up, so I really appreciate the comments.

Best,
Duncan