This is now the fourth time I've seen people ask about this.

Why can't Typed Racket be a little different than Racket and have another
match form that does this or a notion of disjoint unions?

You've said many times that TR is for converting Racket programs, but
clearly some of us want to write quasi-ML in TR, but we can't without hacks
like this.

Jay

On Fri, Dec 9, 2011 at 1:29 PM, Sam Tobin-Hochstadt <sa...@ccs.neu.edu>wrote:

> I think what you're asking for is static errors for coverage failures
> in `match' when used in Typed Racket.
>
> There are two reasons this isn't something I'm planning on doing in
> general:
> 1. It would be a significant change from the semantics of `match' in
> Racket, which as you note raises a runtime error.
> 2. It's unlikely to be precise enough in enough cases to be useful.
> `match' is just too flexible, and TR insufficiently smart, for this to
> be the right default.
>
> However, for this purpose, Typed Racket provides the `typecheck-fail'
> form [1], for raising explicit type errors.  Rewrite your match
> expression to:
>
> (match f
>    [(list s) #true]
>     [_ (typecheck-fail #'here #:covered-id f)])
>
> and you get the error message:
>  Type Checker: Incomplete case coverage; missing coverage of Foo
>
> [1]
> http://pre.racket-lang.org/docs/html/ts-reference/Utilities.html?q=type-e#%28form._%28%28lib._typed-racket/base-env/prims..rkt%29._typecheck-fail%29%29
>
> On Fri, Dec 9, 2011 at 3:20 PM,  <cleme...@brinckerhoff.org> wrote:
> > *** Description:
> > Code using match to take apart opaque types
> > signal runtime match failure rather than
> > a type-checking failure.
>
>
>
> --
> sam th
> sa...@ccs.neu.edu
>



-- 
Jay McCarthy <j...@cs.byu.edu>
Assistant Professor / Brigham Young University
http://faculty.cs.byu.edu/~jay

"The glory of God is Intelligence" - D&C 93
_________________________________________________
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev

Reply via email to