如何指定输出与“任何”输入相同?

时间:2014-02-25 03:10:23

标签: types racket

我必须为家庭作业做几个功能,我可以很容易地逃避不这样做,但我想知道是否可能,因为我觉得它看起来会更清洁。如果我宣布这样的函数:

(: my-funct : Integer Any -> (Listof Any))

如果第二个输入确实确定了输出的类型,有没有办法指定它?在类中,示例使用了(全部)函数,但他从未真正解释过它,使用我在试验过的示例中可以看出的内容:

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

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

但编译器不喜欢这两种方式。有没有办法做我想要的或者我应该离开它?

1 个答案:

答案 0 :(得分:2)

试试这个:

#lang typed/racket

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