About a minute ago, Sam Tobin-Hochstadt wrote: > On Thu, Oct 28, 2010 at 12:29 PM, Eli Barzilay <e...@barzilay.org> wrote: > > Three hours ago, Matthias Felleisen wrote: > >> > >> On Oct 28, 2010, at 8:34 AM, Matthew Flatt wrote: > >> > > >> > None seem especially worth mentioning, but the internal-definition > >> > change could be mentioned if we need more to Say: > >> > > >> > * The `when', `unless', `cond', `case', and `match' forms (in > >> > `racket/base' and derived languages) now allow immediate > >> > internal definitions. > >> > >> Just for the record: allowing internal definitions all over the > >> place and mixing them properly with expressions has been one of the > >> best small changes of the decade. > > > > BTW, there's another one that I think should get the same: `begin0'. > > That would be weird. What do these do? > > (begin0 (define x 1) x) > (let ([x 0]) (begin0 x (define x 1))
I don't see what should be weird, those would be similar syntax errors to what you get from (begin0 (define x 1) (let () x)) (let ([x 0]) (begin0 x (let () (define x 1)))) [You're probably thinking of (define-syntax-rule (begin0 b0 b ...) (let ([r b0]) b ... r)) which makes the second confusing in that it will not be a syntax error but a useless definition.] -- ((lambda (x) (x x)) (lambda (x) (x x))) Eli Barzilay: http://barzilay.org/ Maze is Life! _________________________________________________ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/dev