In this case, you need to manually create the polymorphism:
-> (map (inst identity Integer) '(1 2 3)) - : (Listof Integer) [more precisely: (Pairof Integer (Listof Integer))] '(1 2 3)
The reason is explained in the Typed Racket Guide here :
The typical Rackets local type inference algorithm is currently not capable of inferring types for polymorphic functions, which are used at higher orders of the arguments, which themselves are polymorphic.
(see documents for further explanation and examples)
source share