Typed Racket 如何在参数内部中处理带有类型变量的联合?

问题描述

为了在泛型函数应用中推断类型变量,Typed Racket 生成约束,然后解决它们。

但是它如何处理涉及联合的约束?例如,Typed Racket 接受以下代码

(: gen (All (t) (-> (U t Number) (U t Number))))
(define (gen x) x)


(: use (-> (U String Number)))
(define (use) (gen ""))  ; interesting part: instantiating the `All` in `gen`

解决 t 的一种方法是:

  • 尝试使用 t = String,如果这不起作用
  • 试试t = Number

这将是一种回溯形式。 Typed Racket 会在这里回溯吗?

这是我从消息来源了解到的:

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)