我计算了repl中(time (eval ......))
形式的表达式(启动时使用-I typed/racket
),并且出现了错误:
string:1:0: Type Checker: Polymorphic function `time-apply' could not be applied to arguments:
Domains: (-> a ... a b) (List a ... a)
(-> b) Null
Arguments: (-> AnyValues) Null
in: (time (eval ......))
[,bt for context]
如何指定eval
结果的数量和类型?
我尝试使用cast
和assert
,这产生了新的错误。
这里的问题是'eval'的异常类型。
两个可能的修复:
#lang typed/racket
(time (call-with-values (λ () (eval (+ 3 4))) (inst list Any)))
或者,如果您不需要捕获结果,您可以执行更简单的操作,如
#lang typed/racket
(time (begin (eval (+ 3 4)) #f))