[plt-scheme] 204.7

From: Joe Marshall (jrm at ccs.neu.edu)
Date: Wed Jul 2 11:24:24 EDT 2003

On WindowsXP with a fresh exp tagged CVS tree and clean build,

> mzscheme -mqvL- setup.ss setup --
     ... works, creates lots of zos and stuff, etc.

> "setup plt.exe" 

----- Original Message ----- 
From: "Matthew Flatt" <mflatt at cs.utah.edu>
To: <plt-scheme at list.cs.brown.edu>
Sent: Tuesday, July 01, 2003 20:03
Subject: [plt-scheme] 204.7

>   For list-related administrative tasks:
>   http://list.cs.brown.edu/mailman/listinfo/plt-scheme
> The exp-tagged code in CVS for MzScheme and MrEd is now version 204.7.
> Changes:
>  * Added a "package.ss" library to MzLib. It exports `package' and
>    `open', which correspond to Chez's `module' and `import', plus a few
>    other forms.
>    The `package' and `open' forms are especially useful to macro
>    implementors:
>       "Extending the Scope of Syntactic Abstraction"
>       Waddell and Dybvig
>       POPL'99
>       http://www.cs.indiana.edu/~dyb/papers/popl99.ps.gz
>    Beware that `import' doesn't act like `define' or `require' when
>    introduced by a macro. Roughly, `import' exposes bindings that were
>    hidden, rather than introducing new bindings. See the manual (and
>    the paper above) for examples.
>    The "package.ss" library is based on Scott Owens's "structure.ss"
>    library, and "package.ss" replaces "structure.ss". To support the
>    let*-like behavior of Standard ML structures, "package.ss" provides
>    `define*', `open*', etc.
>  * Added `module->namespace', which takes a module name and returns a
>    namespace that corresponds to the body of the module.
>    Evaluating with this namespace is like evaluation in DrScheme's
>    interactions window in the `(module ...)' language, except that
>    changing a namespace binding changes the corresponding module's
>    internal and exported defintions. (This is like Tung's environment
>    circa 1992.)
>  * Added `namespace-module-registry'.
>    Previously, a namespace was defined to contain the table of loaded
>    and instantiated modules. That definition doesn't work with
>    `module->namespace', where different namespaces share the module
>    table. The result of `namespace-module-registry' represents this
>    sharing. It's useful mainly to module name resolvers.
>  * Added #; reader comment syntax (again, like Chez).
>  * Added `namespace-undefine-variable!', which is like MzScheme's old
>    `undefine'.
>  * Changed `syntax-local-context' so that it returns a list for
>    internal-define expansion, instead of 'internal-define, and changed
>    `local-expand' so that it accepts a list to mean internal-define
>    expansion.
>    For built-in expansion, each list item identifies an active
>    internal-define expansion context. Transformers that call
>    `local-expand' for internal-define-like expansion should generate a
>    key that represents the context; use the same key for each expansion
>    in a set of definitions, and cons it onto `(syntax-local-context)'
>    if the result is a list (or cons it onto null if the result is not a
>    list).
>    See also `(lib "context.ss" "syntax")'.
>    This change supports the `package' and `open' forms, so that they
>    work right with macros such as `unit', `class', `local', or anything
>    else that needs `local-expand'.
>  * Added `syntax-local-get-shadower'. See the docs for details.
>  * Changed top-level `define-syntaxes' to treat zero results
>    from the right-hand side as a kind of abort, so that
>      (define-syntax (id ...) (values))
>    declares the ids without binding them. This is useful for macros
>    that expand to mutuaully recursive definitions of private variables
>    (like, of course, `package').
> Matthew

Posted on the users mailing list.