[racket-dev] `cond' / `when' / `unless' / etc bodies

From: Eli Barzilay (eli at barzilay.org)
Date: Mon Oct 11 20:38:58 EDT 2010

40 minutes ago, Matthew Flatt wrote:
> I agree about changing `when', `unless', and `cond'.
> I can't see changing `begin', especially now that
> internal-definition contexts allow a mixture of definitions and
> expressions. Unlike changing `when' and `unless', changing `begin'
> could change some existing programs, such as
>  (let ()
>    (begin
>     (define x 1)
>     x)
>    x)
> where that `begin' is a splicing `begin', since it's in an
> internal-definition context.

Yes, it's the (imaginary) implicit begin that would change, so the
above wouldn't change.

> In some future language, we should get rid of the overloading of
> `begin' for splicing and sequencing, but it would be painful to change
> right now.


> At Mon, 11 Oct 2010 19:15:09 -0400, Eli Barzilay wrote:
> > I'd love to see an implicit `#%begin', which could have the above
> > apply in more places automatically.  (It was one of the feature
> > requests I asked for in the summer meeting.)
> Recall that no one solved the technical problem with where to pull
> the lexical context for the implicit `#%begin' or `#%body':
>   http://lists.racket-lang.org/dev/archive/2010-July/003624.html

I remember being confused with how that problem would look like, but I
don't think that I've seen an example where this would be problematic.
(I think that we talked about it, but I can't remember any concrete

In any case, I did remember that it was problematic...

          ((lambda (x) (x x)) (lambda (x) (x x)))          Eli Barzilay:
                    http://barzilay.org/                   Maze is Life!

Posted on the dev mailing list.