[R6RS] proposed library/syntax-case changes

William D Clinger will at ccs.neu.edu
Mon Aug 28 10:42:19 EDT 2006

Kent wrote:
> After working on the library and syntax-case implementation with Aziz
> Ghuloum, I would like to propose several changes.
> * restrict declarations to the front of a library or lambda body.

I favor that change.

> * flush syntax-lambda.

I'm neutral on that.

> * refine the library-body semantics so that library bodies expand into
>   into the equivalent of the following:
>       (letrec* ((var rhs) ...) ; bindings for all defined variables
>         init ...               ; all of the commands following definitions
>         (once-only)            ; unspecified behavior if evaluated twice
>         (export evar) ...)     ; initializes export locations

I favor that change.  For a script, I assume the init
forms that are interspersed with the definitions get
turned into definitions, so init ... would be empty
just as (export evar) ... would be empty.

> * flush "for eval".

That sounds good, but I don't have time to understand
the issues.

> In the spirit of compromise, I'm willing also to flush indirect-export
> forms, which I think no one else has favored.  This will prevent us from
> eliminating useless local library bindings, but with immutable exports,
> this should be the only downside.

That sounds good also.  I hadn't realized that exports
were fully immutable until our last conference call, and
hadn't understood the implications for implicit exports.


More information about the R6RS mailing list