From: Matthew Flatt <mflatt@cs.utah.edu>
To: plt-scheme@po.cs.brown.edu
Subject: [plt-scheme] 205.9
Date: Fri, 12 Dec 2003 15:15:11 -0700
The exp-tagged code in CVS for MzScheme and MrEd is now version 205.9.
The main visible change is that MzScheme’s `define’ now supports
MIT-style curried-procedure forms:
(define ((f x y) z) (+ z (- x y)))
((f 5 3) 2) ; => 4
If you implement a `define’-like macro (e.g., `define/public’), use
`(lib "define.ss" "syntax")’ to normalize definitions, and then your
macro will support the same procedure abbreviations as `define’ with
the same level of syntax-error reporting.
Changes that are less visible (unless you implement a tool like Check
Syntax):
* Added `syntax-track-origin’, which manages the ’origin property and
property merging just like normal macro expansion. This procedure is
useful when a macro transformer "expands" on its own (e.g., `begin’
splicing).
* Changed MzScheme to add a ’disappeared-binding property when
expanding a block with internal definitions such that syntax
definitions disappear.
* Changed the `define-struct’ expander to add a ’disappeared-use
property for the supertype identifier (if any).
* Changed ’origin and property tracking for internal definitions and
spliced sequences so that information is preserved from forms that
get transformed away (e.g., a `define-values’ that turns into a
clause in a `letrec-values’).
* Fixed a bug in the bytecode verifier that caused it to skip
significant parts of typical bytecode.
Matthew