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

Re: Scheme pre-R6RS Workshop at ICFP - What is the Point?



From: sperber@informatik.uni-tuebingen.de (Michael Sperber [Mr. Preprocessor])
Subject: Re: Scheme pre-R6RS Workshop at ICFP - What is the Point?
Date: 27 May 1998 20:35:46 +0200

> >>>>> "Alan" == Alan Bawden <Alan@lcs.mit.edu> writes:
> 
> Alan> A little example.  Sometimes I'd like to be able to open a file
> Alan> and read it as a sequence of 8-bit bytes.
> 
> An issue finally.  Has this been talked about or could one safely post
> a strawman proposal?

Actually, I'd like to just make a note and then postpone the
discussion of binary I/O.  Here is why:

Most reasonable languages (and here I include C, C++, etc. along with
my more favored ML etc.), I/O has been deliberately left out from the
core language design.  Instead, it is provided by a "standard
library".

Now, some may say that standard library design is also language
design, and I would agree with this to some extent.  But there still
is a distinction.

Before we are able to talk about library design, we must first come up
with a standard way of dealing with libraries in general.  And _that_
will have to be reflected in the design of the language itself.  What
I am talking about, of course, is a module system.

Once we have a module system, many of the apparent conflicts can be
reconciled: Libraries can be specified, features can be properly
grouped, and individual implementations can safely provide their own
extensions.

An example for the latter: The "Standard ML of New Jersey"
implementation of "Standard ML" has finally come around to cluster all
(well, most) of its language extensions in one module: the structure
called "SMLofNJ".  This includes trivial things like access to the
command line as well as more tricky issues such as first-class
continuations, timers, control of the garbage collector, profiling,
and weak pointers.  None of this stuff has any bearing on "The
Definition of Standard ML" or the specification of the standard
library.  Those who don't need to use it don't need to know about it.

"Above all," I would like to urge everyone, "if you want to make Scheme a
better language, the first you need to do is provide adequate support
for modularity!"

(SML has gone the same way: 1990 there was only the module system and
hardly any library. The initial basis in the 1990 definition was a
joke as far as serious programming is concerned.  Seven years later,
people then got their act together and agreed on a "Standard Basis"
library.)

-Matthias