(Previous discussion continued)
Re: srfi names Alex Shinn 14 Aug 2002 04:08 UTC

Re: srfi names Alex Shinn 14 Aug 2002 04:08 UTC

[ cc'ing xxxxxx@srfi.schemers.org which is a better place for this
  discussion ]

>>>>> "Ben" == Ben Goetter <xxxxxx@mazama.net.xyz> writes:

    Ben> Quoth Ulrich Kaufmann:
    >> Does anyone think that a debate comprising, at the last count, 62
    >> messages

    Ben> Debate?  I don't see any debate.  I see one Java(tm) programmer
    Ben> who replies to every message in this thread.

Well, there's also at least a Perl programmer (hopefully that doesn't
discredit me too much on this list :)

    Ben> Elsewhere, I see an overall consensus: We Need Modules.

Most definitely.  That is probably the single biggest problem facing
Scheme right now... until we get a module system, the average Scheme
script will never work on more than one Scheme, no matter how similar
the Schemes in question.  It limits our ability to share code - anything
from one Scheme always requires munging to work with another.  That's
just sad... I know of no other language with a formal standard for which
that is the case.

However, naming is a different issue.  As has already been pointed out,
SRFI-0 and SRFI-7 both refer to "feature identifiers" and SRFI-0
specifically mentions there will probably be the need for aliases for
these identifiers.  Ideally these identifiers would also be used in a
module system, and likely in general discussions/comparisons/changelogs
of Schemes to give a more meaningful description than some number.

The only real argument that has turned up against names is that numbers
are less ambiguous.  This is true.  And assembly is less ambiguous than
higher-level languages, and machine code even less so.  Sound
frequencies are less ambiguous than musical notation.  Latitude and
longitude are less ambiguous than the name of a city.  But it's easier
to work with names.  Consider the recent discussion of the "begin" form,
where the appropriateness of the name was called into question because
the form serves two purposes.  Nobody proposed resolving the ambiguity
by renaming it "primitive-1".  We agree sometimes we'll get names wrong,
and are willing to revisit and change names at times, but nobody
actually programs by number.

So I don't think at this point anyone is actually arguing against
descriptive names, the question is really what naming process we use.
Specifically, how do we address naming conflicts when two SRFI's
introduce the same idea?  For many things this is not an
issue... "list-lib" defines basic list operations that haven't changed
in decades and aren't likely to be superceded by another SRFI.  Rather,
new SRFI's might define additional operations on lists, for example
"sort-lib."  But other concepts like "objects" or (alas) "modules"
aren't so simple and may well have many different SRFI's.

One proposal is to suffix conflicting SRFI's with a "serial" number
(optionally always requiring a serial number).  This is very easy for
people to remember but can be misleading... objects-2 could be either an
improvement over objects (maybe by the same author) or it could be an
alternate proposal that doesn't even use the same style.  If such an
approach were taken people would simply have to remember that these
numbers indicate historical order, not necessarily version or relation.

Another proposal is to require a sponsor prefix.  In Java this is
formalized with a domain name convention, in Scheme this could just be
the sponsor or project, e.g. "meroon.objects," "smalltalk.objects," or
"clos.objects".  Examples were given of all the various GUI systems,
where you might have "gtk.ui," "kde.ui," or "ncurses.ui".  The problem
here is it can be cumbersome when you really don't think the sponsor
prefix is warranted... for the aforementioned list-list, "olin.list-lib"
seems a little wordy.

Yet another option is to do what CPAN does (I don't know of any other
public code repository as large or successful), which is to let the
authors decide what they think is best.  The CPAN maintainers do have
veto ability... they can refuse if you want to create a module called
"Regexp," or "Objects" but in general people *want* their names to be
descriptive, and people know that those names aren't very helpful to
users.  It is mostly self-regulating.  Of course, SRFI's are not a "code
repository" but the naming issue is the same.

In summary: we need names that are easy to remember, but we're not yet
sure what those names should be.  There is still room for debate.