On Mon, Jan 30, 2012 at 3:54 PM, John Clements <cleme...@brinckerhoff.org> wrote: > > On Jan 30, 2012, at 12:53 PM, Sam Tobin-Hochstadt wrote: > >> On Mon, Jan 30, 2012 at 3:37 PM, Sam Tobin-Hochstadt <sa...@ccs.neu.edu> >> wrote: >>> On Mon, Jan 30, 2012 at 3:22 PM, John Clements >>> <cleme...@brinckerhoff.org> wrote: >>>> Am I missing something obvious in either of these? >>> >>> No. Typed Racket doesn't have type subtraction, which is what you >>> need in the first case. I'm not sure why the second case isn't working >>> right; I think the type of `filter' is a little too restrictive. >> >> Thinking more about the second case, the problem is that you want the >> type of `pair?' to be: >> >> (All (A) (A -> Boolean : A \intersect (Pairof Any Any)) >> >> But the type of `pair?' is: >> >> (Any -> Boolean : (Pairof Any Any)) > > Yes, I agree, and intersection types occurred to me in this case too. I > assume you're speaking hypothetically: TR doesn't support intersections, does > it?
Right, sorry, that wasn't clear. Typed Racket doesn't support this feature. I think right now you're stuck with the limitations of higher-order uses of occurrence typing that you've run into. -- sam th sa...@ccs.neu.edu ____________________ Racket Users list: http://lists.racket-lang.org/users