[racket-dev] else clauses: possible change to match?

From: J. Ian Johnson (ianj at ccs.neu.edu)
Date: Fri May 3 11:18:16 EDT 2013

Nothing readily available. I commonly use a shimmed match that gives better match failure errors that help me pinpoint a problem (though it's not for everyone):

(define-syntax (matche stx)
 (syntax-case stx () [(_ e [p rhs] ...) #`(matche e [p rhs ...] [else (error 'bad-match "~a didn't match in ~a" else '#,stx)])]))

A macro is easy enough to change. I'm not saying to stay the backwards incompatible change because of me (and I don't use "else" like this anymore). I'm just noting that this seems like a plausible pattern out there.

-Ian
----- Original Message -----
From: "Robby Findler" <robby at eecs.northwestern.edu>
To: "J. Ian Johnson" <ianj at ccs.neu.edu>
Cc: "Robby Findler" <robby at eecs.northwestern.edu>, dev at racket-lang.org, "Sam Tobin-Hochstadt" <samth at ccs.neu.edu>
Sent: Friday, May 3, 2013 11:12:34 AM GMT -05:00 US/Canada Eastern
Subject: Re: else clauses: possible change to match?

Can you point to some examples? 


Note that you can still use else, as long as you don't refer to it as a variable. 

On Friday, May 3, 2013, J. Ian Johnson wrote: 


I've used else as a catch-all binding in match. Yes, it's not the best practice, but I think since I've done it, other people must have done it too. This could annoy them. 
-Ian 
----- Original Message ----- 
From: "Robby Findler" < robby at eecs.northwestern.edu > 
To: "Sam Tobin-Hochstadt" < samth at ccs.neu.edu > 
Cc: dev at racket-lang.org 
Sent: Friday, May 3, 2013 11:04:27 AM GMT -05:00 US/Canada Eastern 
Subject: Re: [racket-dev] else clauses: possible change to match? 


Given that we don't yet even have a prototype of racket2, I'm going to guess that "near" isn't all that near. IMO, there are other big things that we should be focused on going first (notably the package system). 


Just to check again: Is no one concerned with the backwards incompatibility issue? 



Robby 

On Friday, May 3, 2013, Sam Tobin-Hochstadt wrote: 


Right, I agree with this. My question is basically: are we going to, 
in the reasonably near future, be encouraging people to program in a 
`#lang racket2` where `cond` works differently, in which case it 
doesn't seem worth it to change `match`. Otherwise, I'll do this now. 

Sam 

On Fri, May 3, 2013 at 10:42 AM, Robby Findler 
< robby at eecs.northwestern.edu > wrote: 
> Cond's else cannot change. I agree that that's what I would change if I 
> could have it back to do it over, but we cannot. 
> 
> That's the way to perhaps be thinking about racket2, tho. 
> 
> Robby 
> 
> 
> On Friday, May 3, 2013, Sam Tobin-Hochstadt wrote: 
>> 
>> On Fri, May 3, 2013 at 10:22 AM, Robby Findler 
>> < robby at eecs.northwestern.edu > wrote: 
>> > 
>> > For this kind of thing, my preference would be to change match than to 
>> > issue 
>> > a warning. I don't like warnings that are basically admitting weaknesses 
>> > in 
>> > the language design.... Of course, changing a core thing like that may 
>> > be 
>> > more trouble than it is worth, due to backwards compatibility concerns, 
>> > which is why I think it is worth raising here to see what others think. 
>> 
>> I'm happy to make this change to `match`, except that I've heard 
>> Matthew say that he would have used a keyword for `else` in `cond` if 
>> he had it to do over again, and I wouldn't want to change one way, and 
>> then change back. 
>> 
>> Sam 

_________________________ 
Racket Developers list: 
http://lists.racket-lang.org/dev 

Posted on the dev mailing list.