如何使用' eval '在类型球拍?



我计算了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结果的数量和类型?

我尝试使用castassert,这产生了新的错误。

这里的问题是'eval'的异常类型。

两个可能的修复:

#lang typed/racket
(time (call-with-values (λ () (eval (+ 3 4))) (inst list Any)))

或者,如果您不需要捕获结果,您可以执行更简单的操作,如

#lang typed/racket
(time (begin (eval (+ 3 4)) #f))

最新更新