[r6rs-discuss] [Formal] Illegal null cases in import syntax

From: AndrevanTonder <andre>
Date: Mon Nov 13 21:30:48 2006

---
This message is a formal comment which was submitted to formal-comment_at_r6rs.org, following the requirements described at: http://www.r6rs.org/process.html
---
Name        : Andre van Tonder
Email       : andre at het.brown.edu
Type        : enhancement
Priority    : minor
Component   : Libraries
Version     : 5.91
Pages       : 21, 22
Dependencies: None
Summary:
--------
In conflict with the rest of the report, certain null cases that
make sense are prohibited in the import syntax.  It is requested 
that these null cases be legalized.
Description:
------------
In the current description of
   <version> ::= <empty>
              |  (<subversion1> <subversion2> ...)
presumably the intent is that <empty> be thought of as shorthand for the second 
line with zero subversions.  The description of subversion matching 
implicitly assumes this.  However, it is currently not allowed to write this 
out as in, for example,
    (library (foo ()) ---).
-----------------------------------------------------------------------------
This is in conflict with the entire rest of the report, where empty cases are 
always legal syntax where it makes sense.
-----------------------------------------------------------------------------
For example, it is legal to write
    (import)
    (export)
    (for foo)
    (rename foo)
    (fields) ; in record definitions
    ...
Allowing the empty list here, and stating that <empty> in
the above grammar abbreviates (),
  - reduces confusion as to the meaning of <empty>
  - reduces the number of special cases in parsing the grammar
  - is consistent with the rest of Scheme, where all empty cases
    are normally allowed where it makes sense
  - follows a regularity that can simplify automatic generation
    and processing of code
The same goes for the specifications of AND and OR in the import
syntax on page 22.  In fact, since normal AND and OR do take
zero arguments, the current description of AND and OR in the import
syntax introduces a gratuitous inconsistency.
Suggestion:
-----------
Please change the syntax of AND, OR, <version> and <version reference>
to work also for the null cases as follows:
   (and <subversion condition> ...)
   (or <subversion condition> ...)
   <version> ::= <empty>
              |  (<subversion> ...)
   <version reference> ::= <empty>
                        |  (<subversion reference> ...)
Received on Mon Nov 13 2006 - 17:08:07 UTC

This archive was generated by hypermail 2.3.0 : Wed Oct 23 2024 - 09:15:00 UTC