SRFI naming Alphanumeric Petrofsky 14 Aug 2002 00:16 UTC

As has been discussed on comp.lang.scheme, the naming scheme for SRFIs
has become unwieldy: keeping thirty different numbers straight is
beyond the mental capacity of those of us who inhaled questionable
substances in college, and using the full titles is both too verbose
and unamenable to embedding in an identifier.

Here's a proposal:

   Each SRFI will have a title and a shortname.  Just as with the
   title, the shortname is chosen by the author, and may change during
   the revision process.  The title may be any latin-1 string (as
   now), and the shortname may be any r5rs identifier (a
   case-insensitive string in a subset of ascii as described in r5rs
   section 7.1.1).  When a SRFI is finalized, it is assigned a
   shortname serial number: the lowest positive integer that has not
   been assigned to any previous SRFI with the same shortname.

   Any srfi may be unambiguously and concisely referred to in
   announcements, manuals, papers, other SRFIs, etc., as "SRFI n",
   where n is the SRFI number, or as "SRFI shortname-m", where m is
   the shortname serial number.  Systems that support SRFIs 0 or 7
   should allow srfi-n or srfi-shortname-m as feature identifiers for
   SRFIs.

That's it.  I think this greatly relieves the obscurity problem
without introducing any authority problem.  I imagine we could go to
well over a hundred SRFIs with very few shortname serial numbers
higher than two.

To assign shortnames to all the already finalized SRFIs, we would want
to poll the authors, but here's a stab at an initial list, derived
from usenet posts of Stephan Houben and felix:

   SRFI number
   |   Shortname
   |   |                           Shortname number
   0   cond-expand                 1
   1   list-lib                    1
   2   and-let*                    1
   4   homogeneous-vectors         1
   5   signature-let               1
   6   string-ports                1
   7   feature-cond                1
   8   receive                     1
   9   define-record-type          1
   10  sharp-comma-syntax          1
   11  let-values                  1
   13  string-lib                  1
   14  char-set-lib                1
   16  case-lambda                 1
   17  generalized-set!            1
   18  multithreading              1
   19  time-date                   1
   21  real-time-multithreading    1
   22  unix-scripts                1
   23  error                       1
   25  make-array                  1
   26  cut                         1
   27  random-sources              1
   28  format                      1
   29  localization                1

-al