[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: a simple counter-proposal

This page is part of the web mail archives of SRFI 55 from before July 7th, 2015. The new archives for SRFI 55 contain all messages, not just those from before July 7th, 2015.

campbell@xxxxxxxxxxxxxxxxxxxxxxxxxxx wrote:
It occurred to me last night that a particularly simple extension to
SRFI 7 would likely appease all sides of this issue, including myself
and Felix.  (Both a proponent of the existing SRFI 55 proposal and a
proponent of Scheme48's module system on IRC have already approved of
it.)  SRFI 7's grammar would be extended in the <program> nonterminal:

  <program> -->
      (PROGRAM <program-clause>+) <command or definition>*

where <command or definition> is as defined by R5RS in section 7.1.6.
In the case that there are forms S* following the PROGRAM form that
contains clauses C*, it would be equivalent to having written a PROGRAM
form (program C* (code S*)).  For example, Felix might write a program
with SRFI 55 to display the result of (iota 5):

    (require-extension srfi-1)
    (display (iota 5))

In SRFI 7, this would be written as:

    (program (requires srfi-1)
      (code (display (iota 5))))

Felix objects to this on grounds of complexity and extra typing.  With
this new amendment proposal, the program written with SRFI 7* would be:

    (program (requires srfi-1))
    (display (iota 5))

which retains all existing functionality of SRFI 7 -- the feature
conditionalization -- and all brevity of SRFI 55's REQUIRE-EXTENSION --
it's only a single character longer, in fact --; furthermore, it is
still compatible with module systems such as that of Scheme48, because
the module data -- the configuration language -- is _still_ entirely
disjoint from Scheme, unlike the present SRFI 55's REQUIRE-EXTENSION;
the configuration language is very clearly separated from Scheme in
that the PROGRAM form is the first in the file, and every following S-
expression is Scheme.  I propose that SRFI 55 be revised to define this
amendment/extension to SRFI 7, which I expect will satisfy the demands
in brevity of Felix as well as retain the functionality of SRFIs 0 & 7,
and moreover still be as extremely portable as SRFI 7.

Just one question: what makes

(program (required srfi-1))
(display (iota 5))

more portable (in the sense of being compatible with S48's module system),

(require-extension (srfi 1))
(display (iota 55))


(provided SRFI-55 is changed in such a way that it's recommended
use is as the first expression in a file)

(While they're
at it, the SRFI 55 authors could also include a statement about trying
to make features available if they're not already available, if they
still consider the absence of such a statement in SRFI 7 an important

Well, as the document says, it's mostly at the discretion of the implementation
to specify what it means to "make an extension available", but it should perhaps
be elaborated a little.