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