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