[racket-dev] [plt] Push #25466: master branch updated

From: Eli Barzilay (eli at barzilay.org)
Date: Tue Oct 16 15:54:32 EDT 2012

A few minutes ago, Sam Tobin-Hochstadt wrote:
> On Tue, Oct 16, 2012 at 3:39 PM, Eli Barzilay <eli at barzilay.org> wrote:
> > A few minutes ago, Sam Tobin-Hochstadt wrote:
> >> On Tue, Oct 16, 2012 at 3:10 PM, Eli Barzilay <eli at barzilay.org> wrote:
> >> > Just now, Jay McCarthy wrote:
> >> >> match-define is something else
> >> >
> >> > Indeed it is -- which makes the whole thing even more
> >> > confusing.  I can't help imagining a newbie's reaction when
> >> > they're told that
> >> >
> >> >   Oh, here's your mistake -- you've used match-define where you
> >> >   should have used define/match.
> >> >
> >> >
> >> > IMO, this is bad enough to withdraw it if there's no good name
> >> > for it.
> >>
> >> I think both names are in keeping with the appropriate
> >> conventions -- `match-define` is a variant of `define` but with
> >> patterns in the binding positions, just like `match-let` and
> >> `match-lambda` etc.  I don't think this is any different from
> >> `regexp-match` vs `regexp-match*`, for example.
> >
> > Yes, both names follow conventions, only different ones.  It's the
> > mixture of convention that make the above newbie situation look so
> > ridiculously confusing.
> 
> Unfortunately, we have only one thing we can vary here -- the name.
> So while I'd be happy to hear better names for `define/match`, it
> would be wrong to call it `match-define`, and it's a valuable form
> and I plan to keep it.

Yes, the name is what should vary here, I had nothing to say about
what it does.  Please¹⁷ change it.  Even a `match-define*' would be
better than `define/match'.

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


Posted on the dev mailing list.