[racket-dev] 5.0.2 changelog
About a minute ago, Sam Tobin-Hochstadt wrote:
> On Thu, Oct 28, 2010 at 12:29 PM, Eli Barzilay <eli at 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!