[R6RS] proposed library/syntax-case changes
William D Clinger
will at ccs.neu.edu
Mon Aug 28 10:42:19 EDT 2006
> 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
> 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