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

From: Sam Tobin-Hochstadt (samth at ccs.neu.edu)
Date: Tue Oct 16 15:58:56 EDT 2012

On Tue, Oct 16, 2012 at 3:54 PM, Eli Barzilay <eli at barzilay.org> wrote:
> 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'.

`match-define*` would be much worse -- it isn't a variant on
`match-define`, nor does it resemble any of the other `match-X` forms.

-- 
sam th
samth at ccs.neu.edu


Posted on the dev mailing list.