[racket-dev] 5.0.2 changelog
On Thu, Oct 28, 2010 at 12:41 PM, Eli Barzilay <eli at barzilay.org> wrote:
> 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))
This isn't any different from my first example. What did you mean here?
> (let ([x 0]) (begin0 x (let () (define x 1))))
What about
(let ([x 0]) (begin0 x (define-syntax x #'1)))
or
(let ([x 0]) (begin0 x (define-syntax x #'1) 7))
?
--
sam th
samth at ccs.neu.edu