Message from discussion
Problem with case
Received: by 10.224.52.195 with SMTP id j3mr1336469qag.0.1348018283079;
Tue, 18 Sep 2012 18:31:23 -0700 (PDT)
X-BeenThere: racket-users@googlegroups.com
Received: by 10.229.105.85 with SMTP id s21ls755715qco.1.gmail; Tue, 18 Sep
2012 18:31:22 -0700 (PDT)
Received: by 10.224.52.195 with SMTP id j3mr1336466qag.0.1348018282947;
Tue, 18 Sep 2012 18:31:22 -0700 (PDT)
Received: by 10.224.52.195 with SMTP id j3mr1336465qag.0.1348018282914;
Tue, 18 Sep 2012 18:31:22 -0700 (PDT)
Return-Path: <users-boun...@racket-lang.org>
Received: from champlain.ccs.neu.edu (champlain.ccs.neu.edu. [129.10.115.116])
by gmr-mx.google.com with ESMTPS id g28si459965qcq.2.2012.09.18.18.31.22
(version=TLSv1/SSLv3 cipher=OTHER);
Tue, 18 Sep 2012 18:31:22 -0700 (PDT)
Received-SPF: neutral (google.com: 129.10.115.116 is neither permitted nor denied by domain of users-boun...@racket-lang.org) client-ip=129.10.115.116;
Authentication-Results: gmr-mx.google.com; spf=neutral (google.com: 129.10.115.116 is neither permitted nor denied by domain of users-boun...@racket-lang.org) smtp.mail=users-boun...@racket-lang.org
Received: from champlain.ccs.neu.edu (localhost.localdomain [127.0.0.1])
by champlain.ccs.neu.edu (8.14.4/8.14.4) with ESMTP id q8J1TDYw016200;
Tue, 18 Sep 2012 21:29:18 -0400
Received: from mail-oa0-f46.google.com (mail-oa0-f46.google.com
[209.85.219.46])
by champlain.ccs.neu.edu (8.14.4/8.14.4) with ESMTP id q8J1T6NB016182
for <us...@lists.racket-lang.org>; Tue, 18 Sep 2012 21:29:06 -0400
Received: by oago6 with SMTP id o6so626942oag.33
for <us...@lists.racket-lang.org>; Tue, 18 Sep 2012 18:29:06 -0700 (PDT)
d=google.com; s=20120113;
h=x-forwarded-to:x-forwarded-for:delivered-to:received-spf
:dkim-signature:mime-version:in-reply-to:references:date:message-id
:subject:from:to:cc:content-type:x-gm-message-state;
bh=GNIQlmDQSOwK3VLMaS9NUB+z+Bg/+GqiWZTIRhKLuoQ=;
b=ZWs9ZNeupUl8h9hF03VqeZ8n7wJkzmsVBDi3qNVdgpohiWqbPH04/SL/LTaYuY9V9P
FMhiVZyJ3wmaY/sYxxNOmIy/5lWkTpnKmh7MRJeArvfDTlsyOm0j3EsLiSjRfOE0O06m
SPo+v6pBhBrqvBvojjB4oOURAWXDmqeXpa/9v2QI5AV5xNA7yAN5z0XeNMrkgKOBDsPT
oeN/A6iJ8fS9DAxpU7yAsM63iZhWzfEoSfJu5AueIG0kGccTwASEQuy/0yi1SYVBuIK8
+E372kPmMH7jFQOQv8wmf9aO03o5GTuF+DwOdMsJ8fhUOpN08skNieznSRq+ZWdUUY89
gBXQ==
Received: by 10.60.29.230 with SMTP id n6mr1770697oeh.123.1348018146540;
Tue, 18 Sep 2012 18:29:06 -0700 (PDT)
X-Forwarded-To: us...@lists.racket-lang.org
X-Forwarded-For: us...@plt-scheme.org us...@lists.racket-lang.org
Delivered-To: us...@racket-lang.org
Received: by 10.76.13.162 with SMTP id i2csp1125oac;
Tue, 18 Sep 2012 18:29:05 -0700 (PDT)
Received: by 10.180.103.4 with SMTP id fs4mr3063046wib.16.1348018145210;
Tue, 18 Sep 2012 18:29:05 -0700 (PDT)
Received: from mail-wi0-f175.google.com (mail-wi0-f175.google.com
[209.85.212.175])
by mx.google.com with ESMTPS id w2si3092016wiz.30.2012.09.18.18.29.04
(version=TLSv1/SSLv3 cipher=OTHER);
Tue, 18 Sep 2012 18:29:05 -0700 (PDT)
Received-SPF: pass (google.com: domain of zeppi...@gmail.com designates
209.85.212.175 as permitted sender) client-ip=209.85.212.175;
Received: by wibhm2 with SMTP id hm2so4718181wib.16
for <us...@racket-lang.org>; Tue, 18 Sep 2012 18:29:04 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.180.108.45 with SMTP id hh13mr3203762wib.15.1348018144272;
Tue, 18 Sep 2012 18:29:04 -0700 (PDT)
Received: by 10.216.97.3 with HTTP; Tue, 18 Sep 2012 18:29:04 -0700 (PDT)
In-Reply-To: <CAGZAPF4==vmfHisLPsHHMyXNKRAh8+e8EBDjMXw6RNEqiQG...@mail.gmail.com>
References: <CAEEP09D39AMiTozxDCA5WUx4bkE0KtvRY=Ez-dxgpXESigu...@mail.gmail.com>
<CAKfDxxwJZwPGtejSXh-jGSUFYuj4jxO2eAoA7Wh8_7EE_Q5...@mail.gmail.com>
<5057AF20.1090...@ccs.neu.edu>
<CAKfDxxx2Z-UD+odPVYFcFvBJz4o1qUn84+23krVPGz9RLXt...@mail.gmail.com>
<CB5BE78D-2FB0-403F-8DFE-B0A5E4D2C...@gmail.com>
<CAAN-iVFFyHyD5uJFcx+F6oHvpJKyj6WdiSsMUAOr04SZw1r...@mail.gmail.com>
<CAGZAPF4==vmfHisLPsHHMyXNKRAh8+e8EBDjMXw6RNEqiQG...@mail.gmail.com>
Date: Tue, 18 Sep 2012 21:29:04 -0400
Message-ID: <CAKfDxxyGg3NQbVhEytW17puHADBLq7MomBZVgc3F65nkYEH...@mail.gmail.com>
From: Jon Zeppieri <zeppi...@gmail.com>
To: Joe Gilray <jgil...@gmail.com>
X-Gm-Message-State: ALoCoQnQFaJqa/lxKT8EYRgYgeh90EgIDWlY+sj8alIFQaEgHKFvxoNI29Kk2MmzUbKZ4/26YWZM
X-Spam-Status: No, score=-2.7 required=5.0 tests=BAYES_00,DKIM_SIGNED,
DKIM_VALID, DKIM_VALID_AU, FREEMAIL_FROM,
RCVD_IN_DNSWL_LOW autolearn=ham version=3.3.1
X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on
champlain.ccs.neu.edu
Cc: users <us...@racket-lang.org>
Subject: Re: [racket] Problem with case
X-BeenThere: us...@racket-lang.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Racket Users <users.racket-lang.org>
List-Unsubscribe: <http://lists.racket-lang.org/users/options>,
<mailto:users-requ...@racket-lang.org?subject=unsubscribe>
List-Archive: <http://lists.racket-lang.org/users/archive/>
List-Post: <mailto:us...@racket-lang.org>
List-Help: <mailto:users-requ...@racket-lang.org?subject=help>
List-Subscribe: <http://lists.racket-lang.org/users/listinfo>,
<mailto:users-requ...@racket-lang.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Sender: users-boun...@racket-lang.org
Errors-To: users-boun...@racket-lang.org
On Tue, Sep 18, 2012 at 5:29 PM, Danny Yoo <d...@hashcollision.org> wrote:
>
> >
> > I'd like to see a discussion of the tradeoffs between cond & case & match
> > and how each is best used.
1. Use 'cond' where you would use 'if...else if...else' in a C-like
language. It's just a multi-way if:
(cond [(string? value)
(write-string value out)]
[(bytes? value)
(write-bytes value out)]
[(input-port? value)
(copy-port value out)]
[else
(error "bad value")])
2. Use 'case' (roughly) where you would use 'switch' in C, namely,
when you're comparing the value of an expression against a set of
constants:
(case escape-char
[(#\n) #\newline]
[(#\r) #\return]
[(#\t) #\tab]
[(#\a) #\u0007]
[(#\v) #\u000b]
[(#\f) #\u000c]
[(#\e) #\u001b]
[else escape-char])
3. Use 'match' (roughly) where you would use 'case' in ML. I agree
with Danny: it's particularly nice for struct matching:
(: add (All (A) ((Braun A) A -> (Braun A))))
(define (add t a)
(match t
[(Braun-Empty)
(Braun-Tree a t t)]
[(Braun-Tree x l r)
(Braun-Tree a (add r x) l)]))
>
>
> I think 'case' is supposed to have good performance compared to the
> other two, due to work by Jon Zeppieri
> (http://lists.racket-lang.org/dev/archive//2012-July/010036.html).
>
The new case implementation isn't in 5.3 or the stable branch on
github. (I assume the nightly builds on racket-lang.org are from the
stable branch?) It's in the master branch.
____________________
Racket Users list:
http://lists.racket-lang.org/users