On Thu, Oct 20, 2011 at 3:08 PM, J. Ian Johnson <i...@ccs.neu.edu> wrote: > Does typed racket fail to typecheck because cond will return void on negative > numbers or something more related to exhaustive checking regardless of return > value?
The former. Since there's no pattern matching in "core" Racket, it's not even clear what exhaustiveness would mean in that case. > -Ian > ----- Original Message ----- > From: Sam Tobin-Hochstadt <sa...@ccs.neu.edu> > To: Eric Tanter <etan...@dcc.uchile.cl> > Cc: Racket Users <users@racket-lang.org> > Sent: Thu, 20 Oct 2011 14:39:19 -0400 (EDT) > Subject: Re: [racket] [typed racket] type case > > There are basically two options here: > > 1. If you just use `cond' with no `else', you get a type error when > your cases are not exhaustive. For example: > > (: f ((U String Integer) -> Boolean)) > (define (f x) > [(string? x) (string=? x "hi")] > [(exact-nonnegative-integer? x) (= x 7)]) > > This program will fail to typecheck. > > 2. For the particular case of the PLAI `cases' form, Eli and I have > built something for his class which uses Typed Racket, but the > exhaustiveness checking is done by `cases' itself. Lots more about > that is available from Eli's class web page [1], and I'm sure he'd be > happy to give you the code. > > [1] http://pl.barzilay.org/ > > On Thu, Oct 20, 2011 at 10:48 AM, Eric Tanter <etan...@dcc.uchile.cl> wrote: >> Hi again, >> >> Is there a mechanism to do an exhaustive type case? >> >> I know I can use (cond [(type-pred? v) ...] >> [...]) >> >> but of course I have no guarantee that I am exhaustive (and of course, doing >> pattern matching to destruct the value would be even nicer). >> >> Basically, I guess I'm after the typed version of PLAI's type-case. >> >> Thanks, >> >> -- Éric >> >> >> >> _________________________________________________ >> For list-related administrative tasks: >> http://lists.racket-lang.org/listinfo/users >> > > > > -- > sam th > sa...@ccs.neu.edu > > _________________________________________________ > For list-related administrative tasks: > http://lists.racket-lang.org/listinfo/users > > -- sam th sa...@ccs.neu.edu _________________________________________________ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/users