Racket 中的 Fixnum 数据类型是什么?
What is the Fixnum data type in Racket?
我想让我的球拍程序typed/racket加快速度。我的程序使用 Matrix 数据类型对矩阵进行运算。有人建议我使用数据类型 Fixnum。
我有一些矩阵,
(: X (Matrix Fixnum))
(define X (matrix [[0 1] [2 3]] : Fixnum))
没关系。
但是,如果矩阵中的数字有小数,我会得到一个错误。
(: Y (Matrix Fixnum))
(define Y (matrix [[0 0.5] [1.5 2.5]] : Fixnum))
Type Checker: type mismatch
expected: Fixnum
given: Positive-Flonum in: 0.5
Fixnum 是一种机器类型(我不完全理解这是什么;不确定它是否相关)。我知道 fixnum 限制为 64 位。但为什么 0.5(或任何小数,似乎)不能成为 Fixnum?
请阅读文档 (http://docs.racket-lang.org/reference/numbers.html)。以下是摘录:
A fixnum is an exact integer whose two’s complement representation fit into 31 bits on a 32-bit platform or 63 bits on a 64-bit platform
所以,不,fixnum 是一个整数。
请注意,0.5 和 1/2 在 Racket 中是不同的。 0.5 是 Flonum,而 1/2 是精确有理数。
顺便说一句,关于 "Matrix",我看不出你有什么要说的。只有以下代码会导致类型错误。
#lang typed/racket
(: X Fixnum)
(define X 0.5)
当您尝试理解一个程序时,最好尽可能地trim 了解程序,这样您就可以轻松地理解正在发生的事情。
我想让我的球拍程序typed/racket加快速度。我的程序使用 Matrix 数据类型对矩阵进行运算。有人建议我使用数据类型 Fixnum。
我有一些矩阵,
(: X (Matrix Fixnum))
(define X (matrix [[0 1] [2 3]] : Fixnum))
没关系。
但是,如果矩阵中的数字有小数,我会得到一个错误。
(: Y (Matrix Fixnum))
(define Y (matrix [[0 0.5] [1.5 2.5]] : Fixnum))
Type Checker: type mismatch
expected: Fixnum
given: Positive-Flonum in: 0.5
Fixnum 是一种机器类型(我不完全理解这是什么;不确定它是否相关)。我知道 fixnum 限制为 64 位。但为什么 0.5(或任何小数,似乎)不能成为 Fixnum?
请阅读文档 (http://docs.racket-lang.org/reference/numbers.html)。以下是摘录:
A fixnum is an exact integer whose two’s complement representation fit into 31 bits on a 32-bit platform or 63 bits on a 64-bit platform
所以,不,fixnum 是一个整数。
请注意,0.5 和 1/2 在 Racket 中是不同的。 0.5 是 Flonum,而 1/2 是精确有理数。
顺便说一句,关于 "Matrix",我看不出你有什么要说的。只有以下代码会导致类型错误。
#lang typed/racket
(: X Fixnum)
(define X 0.5)
当您尝试理解一个程序时,最好尽可能地trim 了解程序,这样您就可以轻松地理解正在发生的事情。