Hi, The following program typechecks:
#lang typed/racket (define-type R Real) (define-type Rs (Listof R)) (define-type ROrRs (U R Rs)) (define (test [x : ROrRs]) : R (if (list? x) (if (null? x) (error "Less than one") (if (null? (cdr x)) (car x) (error "More than one"))) x)) However, if we define R as an opaque type, e.g., using (require/typed racket [#:opaque MyReal real?]) (define-type R MyReal) then the program does not typecheck. I was expecting that the program should typecheck independently of the actual type being used for R. What am I missing? António Leitão.
____________________ Racket Users list: http://lists.racket-lang.org/users