typed-racket
typed-racket copied to clipboard
Intermediate results from nested polymorphic types expose gensyms
Originally discovered via this Stack Overflow question.
Given the following function:
(: first-value (All (A) (-> A (All (B) (-> B A)))))
(define ((first-value a) b)
a)
Evaluating this in the REPL prints the following type:
> (first-value 'foo)
- : (All (g3743) (-> g3743 'foo))