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