Hi,

Looking at the ICFP'10 paper on logical types, I tried the following:

(: carnum? ((Pairof Any Any) -> Boolean : (Pairof Number Any)))
(define (carnum? p)
  (number? (car p)))

Type Checker: Expected result 
with filter (((Pairof Complex Any) @ p) | (! (Pairof Complex Any) @ p)), 
got filter ((Complex @ (car) p) | (! Complex @ (car) p)) 
in: (number? (car p))

To me, the filters seem to match, though. Any idea what is wrong here?

I want to be able to use carnum? to discriminate <Number,Any> as in:

(: test ((Pairof Any Any) -> Number))
(define (test x)
  (if (carnum? x) (car x)
      10))

Thanks!

-- Éric

PS: I'm using version 5.2.0.1--2011-10-26
_________________________________________________
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/users

Reply via email to