(missing)
(missing)
(missing)
Re: Proposal to add HTML class attributes to SRFIs to aid machine-parsing Marc Nieper-Wißkirchen (06 Mar 2019 10:12 UTC)
Re: Proposal to add HTML class attributes to SRFIs to aid machine-parsing Lassi Kortela (08 Mar 2019 00:24 UTC)

Re: Proposal to add HTML class attributes to SRFIs to aid machine-parsing Lassi Kortela 08 Mar 2019 00:24 UTC

> I'm happy to have the SRFI repositories be the home of these files if
> they don't change, collectively, more than every few months — or more
> often when they're new.
>
> For a while, the eggs <https://wiki.call-cc.org/eggs> for some of
> Chicken Scheme's SRFI implementations were stored in the SRFI
> repositories.  However, that became a problem because they were changing
> so often, for reasons that were to do with Chicken and not with the
> SRFIs.  Because of that, I asked the Chicken folks to host their own
> repos for those SRFIs, giving them complete control and relieving me of
> responding to countless pull requests.
>
> So I do have a limit.  Still, it would be great to have all this
> information, which applies to all Scheme implementations, gathered
> together with the corresponding SRFIs.  So let's start with that assumption.

Very informative. So in practice Ciprian and others who develop the type
signatures would maintain Git clones of the SRFI repos and send pull
requests to the origin repos in batch every now and then?

> If I recall, Ciprian's format is extensible, so we could start by
> extracting, one way or another, simple type signatures, then add more
> information as Ciprian and others produce it.

If we are going to developing the static type signatures in the same
S-expression file where the straightforward transcribed stuff lives,
then we just have to come up with some compromise on its format :) We
could also have them in different S-expression files, but I think it's
better if we work to find a way to fit everything in one file in such a
way that everyone is mostly satisfied. It causes less duplication, is
more likely to be correct, and is probably easier to maintain long-term.

The first conundrum with the argument signatures is that the Lisp
tradition tends to think a function has only one signature (possibly
with optional args) and the names are the main thing, like:

     (make-vector k [fill])

Whereas the functional tradition likes to emphasize types and break it
down to the possible type combinations like a case statement:

     (make-vector
      ((range-length-zero) -> vector-empty)
      ((range-length-zero any) -> vector-empty)
      ((range-length-not-zero) -> vector-not-empty)
      ((range-length-not-zero any) -> vector-not-empty))

Unfortunately, the functional signatures are notoriously hard to read
for people from other traditions because the types are so detailed and
the argument names are omitted or de-emphasized.

We would have to find some notation that combines these quite opposing
traditions. We could also write them separately, but any duplication is
a chance for discrepancy.

Ciprian, have you already thought a lot about how to combine these
representations? The syntax you have so far looks like it's directly
from the functional tradition. Did you come to the conclusion that this
would be the best one?