First draft of Scheme R7RS small language available

The first draft of the R7RS small language standard is now available at:

http://trac.sacrideo.us/wg/attachment/wiki/WikiStart/r7rs-draft-1.pdf

This is a relatively small revision to the R5RS, adding many of the most frequently requested features but keeping the overall structure of the report the same, with a current count of 67 pages. In the spirit of the older reports, many situations are left as errors or unspecified, leaving room for implementations to experiment with their own extensions. The language is still small enough to provide a very compact implementation of, and the current development branch of Chibi-Scheme provides all of the functionality of the draft (in some cases with different names or modules, pending finalization of the standard).

Read the full announcement at comp.lang.scheme

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

A better link ...

... direct to the PDF (the above link is HTML despite the .pdf extension.

The big change from r5rs

...is of course the module system. It is a small irritation that the discussion of the functions in the body doesn't say whether they are in a module. Exceptions is new, as well.

The discussion of delay and force is improved from r5rs. The rationale for call/cc is a little soapboxy.

Is the lack of a distinction between the small and full versions of r7rs in the discussion of eval an oversight?

I don't find it a fairly small revision: it feels different. It would be surprising if they did have the same feel, given the complete lack of continuity in the set of editors.

It is a small irritation

It is a small irritation that the discussion of the functions in the body doesn't say whether they are in a module.

In fact it does: in section 6, procedures in the base module are marked "procedure", whereas those in a module are marked "(name) module procedure". For example, exp is marked "inexact module procedure", showing that it belongs to the (scheme inexact) module, which we expect will be provided by Schemes that provide inexact numbers.

Is the lack of a distinction between the small and full versions of r7rs in the discussion of eval an oversight?

No. As presently planned, large Scheme will contain additional optional modules, but will not change the language core.

There is a ticket to consider providing an environment procedure that returns an environment for evaluation specified by a list of import-specs. This procedure is present in R6RS.

(name) module procedure

procedures in the base module are marked "procedure", whereas those in a module are marked "(name) module procedure".

Yes, I see some examples of that. Then I assume it is a mistake that eval (from the eval module) is just marked procedure?

Postscript - Yes, it is an error, and has already been fixed.

call/cc + letrec

So what does the R7RS committee think about R6RS's restrictions on the call/cc + letrec combination?

Public discussion is ongoing