如何避免使用基于它们的文字数字和类型的类型注释?

时间:2014-11-09 02:45:15

标签: racket typed-racket

在Typed Racket中,如果我有以下类型和功能:

(define-type A (U 'one 'two))
(define (f [a : A]) : A
  a)

然后函数调用(f 'one) typechecks。但是,如果我使用文字数字作为联合类型的组件,如下所示:

(define-type B (U 1 2))
(define (g [b : B]) : B
  b)

然后(g 2)无法使用类型错误进行类型检查:

Type Checker: type mismatch
  expected: B
  given: Positive-Byte in: 2

但是,(g 1)类型检查因为1拥有自己的类型One

我可以使用(g (ann 2 B))(g #{2 :: B}) )来解决问题,但这很麻烦且很麻烦。这是Typed Racket处理数值类型的基本限制,还是有办法使显式类型注释变得不必要?

0 个答案:

没有答案
相关问题