[racket-dev] 'case' using equal?

From: Jon Zeppieri (zeppieri at gmail.com)
Date: Sun Nov 25 19:49:53 EST 2012

Not in any systematic way, no. When I first implemented the
triple-dispatch case, I did look through the racket sources to see how
case was actually used there. It turned out that almost all of the
uses were small, simple, and, for lack of a better word, monomorphic.

Looking back at the users thread, I see what you mean. I'll create a
branch that will do what you suggest: evaluate the expression both
ways, compare, and complain if the results differ.

On Sun, Nov 25, 2012 at 7:28 PM, Robby Findler
<robby at eecs.northwestern.edu> wrote:
> Did you try to see if there were any case expressions in our test
> suites or while building docs or while starting up and fiddling with
> DrRacket that would behave differently with equal??
> Robby
> On Sun, Nov 25, 2012 at 5:33 PM, Jon Zeppieri <zeppieri at gmail.com> wrote:
>> As a follow-up to the discussion on the users list
>> [http://lists.racket-lang.org/users/archive/2012-November/054973.html],
>> I changed 'case' to use equal? comparison.
>> The diff, including additional tests and a doc change, is at
>> [https://github.com/97jaz/racket/commit/731db72e8b9ddcba7b443478666cc278d2a898d0].
>> Performance on Clinger's benchmarks has improved since the last time I
>> checked, even with the equal? change, so this must be due to unrelated
>> optimization work.
>> I did not implement the string optimization I mentioned in the thread
>> on the users list. It occurred to me that (a) using string->symbol on
>> the input would allocate if the symbol hadn't already been interned
>> (which may come as a surprise to the user), and (b) the user probably
>> ought to expect lexicographic equality tests if he uses strings,
>> anyway.
>> -Jon
>> _________________________
>>   Racket Developers list:
>>   http://lists.racket-lang.org/dev

Posted on the dev mailing list.