Types 如何指定输出与';任何';输入?

Types 如何指定输出与';任何';输入?,types,racket,Types,Racket,我必须为家庭作业做几个函数,我可以很容易地不做这些,但我想知道这是否可能,因为我认为它看起来会更干净。如果我要声明这样的函数: (: my-funct : Integer Any -> (Listof Any)) 如果第二个输入实际上决定了输出的类型,有没有办法指定这一点?课堂上的示例使用了(All)函数,但他从未真正解释过,我从我尝试的示例中可以看出: (: my-funct : Integer (All (A) -> (Listof A))) 及 但是编译器不喜欢这两个。有没

我必须为家庭作业做几个函数,我可以很容易地不做这些,但我想知道这是否可能,因为我认为它看起来会更干净。如果我要声明这样的函数:

(: my-funct : Integer Any -> (Listof Any))
如果第二个输入实际上决定了输出的类型,有没有办法指定这一点?课堂上的示例使用了(All)函数,但他从未真正解释过,我从我尝试的示例中可以看出:

(: my-funct : Integer (All (A) -> (Listof A)))

但是编译器不喜欢这两个。有没有办法做我想做的事,还是干脆不做

试试这个:

#lang typed/racket

(: my-funct : (All (A) Integer A -> A))
(define (my-funct n x) x)
#lang typed/racket

(: my-funct : (All (A) Integer A -> A))
(define (my-funct n x) x)