From: Matthew Flatt <mflatt@cs.utah.edu> To: plt-scheme@po.cs.brown.edu Subject: [plt-scheme] 205.8 Date: Thu, 4 Dec 2003 09:17:50 -0700 The exp-tagged code in CVS for MzScheme and MrEd is now version 205.8. The changes are minor: * Changed `get-argb-pixels’ and `set-argb-pixels’ in bitmap-dc% to row-major order: left to right, then top to bottom. * Added an optional argument to `get-face-list’. When it’s ’mono, font faces known to be variable-width are removed from the list (under Windows and X with fontconfig/Xft). * Added `get-bitmap’ and `get-bitmap-mask’ to image-snip%. * Added `vector-immutable’. * Windows: fixed a bug that should have caused the save-file dialog to crash most of the time in DrScheme. Matthew From: Matthew Flatt <mflatt@cs.utah.edu> To: plt-scheme@po.cs.brown.edu Subject: [plt-scheme] 205.8 addition - syntax-id-rules Date: Thu, 4 Dec 2003 15:11:26 -0700 I’ve just exp-tagged an addition to v205.8. The `syntax-id-rules’ form is like `syntax-rules’, except that it creates a transformer that is invoked whenever its binding identifier is used in an expression position (not just the application position) and whenever it is used as a `set!’ target. In other words, `syntax-id-rules’ is the `make-set!-transformer’ version of `syntax-rules’. I’m not sure that this form useful in practice (compared to using `syntax-case’ and `make-set!-transformer’), but it helps for writing a certain kind of tutorial. (define-syntax pwd (syntax-id-rules (set!) [(set! pwd expr) (current-directory expr)] [(clock expr ...) ((current-directory) expr ...)] [clock (current-directory)])) (set! pwd "/tmp") ; sets current-directory parameter pwd ; => "/tmp" (current-directory) ; => "/tmp" (current-directory "/usr/tmp") pwd ; => "/usr/tmp" Matthew