As Any is supertype of all values, what is the equivalent type for function
types?

(Any -> Any) does not work because of the contra-variant requirement of the
argument.

(: f ((Any -> Any) -> True))
(define (f g) #t)

(f (lambda (x) x) #t) ;; works
(f (lambda: ([x : Integer]) #f)) ;; does not work

The error is:

Type Checker: Expected (Any -> Any), but got (Integer -> Any) in: (lambda:
((x : Integer)) #f)

If I understand it correctly, the type I'm looking for is (Bottom -> Any),
which satisfies the contra-variant and variant requirements for function
subtyping. However, the Bottom type doesn't seem to exist (at least at the
user-level, because I remember seeing some error messages that mentioned
Top and Bottom).

Thanks

-- 
Ismael
_________________________________________________
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/users

Reply via email to