[racket-dev] API naming conventions (Push #25466)

From: Robby Findler (robby at eecs.northwestern.edu)
Date: Tue Oct 16 19:43:43 EDT 2012

For the record, I find having two things that combine match and define
in different ways where the name difference is - vs / and swapping the
order of the words to be quite unfortunate.

Plus, we should just have match built into all of the binding forms.


On Tue, Oct 16, 2012 at 5:48 PM, Eli Barzilay <eli at barzilay.org> wrote:
> A few minutes ago, Matthias Felleisen wrote:
>> Eli, can you explain again -- perhaps in different words -- why
>> define/match is a bad name? I understand that we have match-define
>> and define/match now. While I agree that having two of these forms
>> with remotely related functionality is possibly confusing, I don't
>> see why match-define is really a better kind of name than
>> define/match.
> Well, I suggested `match-define' (before I realized that there was
> already one) because it follows the same naming convention for the
> rest of the library.
>> If you are saying, that define/match is bad because it is too
>> distinct from match-define I understand the name argument.
> If that was the only issue, then I wouldn't have objected so strongly
> to it -- but the fact that there *is* an existing `match-define', and
> the fact that it does something different, mean that the match
> interface becomes extremely confusing.  And that's not only for
> newbies -- I can easily see myself not remembering which one of them
> is doing which job.
> A bit later, John Clements wrote:
>> Violent agreement; I'm saying that the *names* are the same (modulo
>> a stylistic choice), not that the meanings are the same.
> As for an attempt to explain why they're a bad combination, John
> indeed put it nicely here.  We have two forms whose meaning is a
> combination of a `define' and a `match', and hanging the difference on
> the order of the two terms (and a `/' vs a `-') means that for human
> readers, the difference is far from apparent.
> And Matthias Felleisen added:
>> (I really dislike match-define. But it's historic so we're stuck.)
> I completely agree -- I'd prefer a `define-match' or a `define/match',
> in the same way that I'd also prefer a `let-match' etc.  (And I also
> agree that the historic choice is an important restriction.)
> --
>           ((lambda (x) (x x)) (lambda (x) (x x)))          Eli Barzilay:
>                     http://barzilay.org/                   Maze is Life!
> _________________________
>   Racket Developers list:
>   http://lists.racket-lang.org/dev

Posted on the dev mailing list.