【发布时间】:2022-01-12 13:45:51
【问题描述】:
我正在typed/racket 中编写一个函数来将表示十六进制值的Integers(0 或1)列表转换为十进制(Integer)。
功能:
#lang typed/racket
(: to-decimal (-> (Listof Integer) Integer))
(define (to-decimal hex-values)
(for/fold
([index : Integer 0]
[result : Integer 0]
#:result result)
([v : Integer (reverse hex-values)])
(values (add1 index) (+ result (* v (expt 2 index))))))
这无法进行类型检查。表达式(+ result (* v (expt 2 index))) 给了我这个错误type mismatch expected: Integer given: Exact-Rational。
我知道整数是 Exact-Rational (source) 的子集。有什么办法可以让我的代码类型检查?也许通过将失败表达式返回的值转换为 Integer ?
非常感谢
【问题讨论】:
标签: types integer typeerror racket typed-racket