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

[Scheme-reports] Ratification vote for R7RS-small

Full name: Alex Shinn

Location: Tokyo, Japan

Vote: yes


The 9th draft satisfies the goals of the WG1 charter by specifying a
language comparable in size to R5RS, supporting macros and modules and
maintaining REPL compatibility.  It satisfies the requirements of
being almost fully backwards compatible with R5RS, and compatible with
a subset of R6RS suitable as the basis for stronger R6RS compatibility
in the WG2 standard.  The dual R5RS/R7RS support in Chibi Scheme and
dual R6RS/R7RS support in Sagittarius Scheme serve as a testament to
this.  R7RS is a bridge to join together our factioned community.

There are of course many things I disagree with in the draft, and
overall I'd prefer it to have been slightly smaller given that
anything left out here can be in the large language.  But to be
honest, given the difficult task we were presented with the result is
better than I had initially hoped for.  It retains the style and small
language feel of R5RS while incorporating features and improvements
from R6RS.

Moreover, if we were to do it all again, or even if another group set
out to achieve the goals set out by the charter, I think the result
would largely be the same.  There would be cosmetic differences, and
some swapping in and out of features considered essential, but many
results derive naturally from the requirements.

For example, the largest and most important change of course is the
module system.  Knowing that phasing and module versioning were among
the most controversial changes in R6RS it was natural to leave these
features for WG2.  On the other hand, R6RS left no room for module
system extensions so we adjusted the syntax to make this possible.
Since both systems are static, translation between the two is trivial.

The extension possibility allowed us to make a change essential to
R5RS compatibility.  Because of the switch to a case-sensitive reader
it's impossible for R6RS to directly use existing R5RS libraries (such
as SSAX, kanren, irregex, etc.) without modifying their source.  This
is an important practical feature, without which automated updates
from upstream are not possible.  R7RS solves this elegantly with

With the module system we achieve the primary goal, the ability to
share code.  If you're reading this and participating in this vote
it's for the same reason as me.  We love Scheme.  We all know that
Scheme is hands down the best dynamically typed language.  Yet we're
forever confined to separate tribes reinventing the same wheels.  If
we reject R7RS then Scheme unification is lost - no one will attempt
yet another sure-to-fail compromise.  But if we ratify then we can
unite, we can share wheels and move on to build cars and rockets and
more.  This is our chance to stop bickering and do something real.


Scheme-reports mailing list