我正在尝试将使用f32vector的Racket程序从ffi / vector转换为Typed Racket程序,该程序需要通过require / typed为f32vector提供注释。 f32vector是可变的;它可以采用可变数量的参数,因此以下两个都是可以接受的:
(f32vector 1.0 3.0 4.0 7.0)
(f32vector 2.0 2.1)
如何为该函数编写类型注释?
最佳答案
假设您已经为F32Vector
使用了不透明类型,则可以这样编写:
(require/typed ffi/vector
[f32vector (Real * -> F32Vector)])
如果您还没有不透明类型,可以像这样导入:
(require/typed ffi/vector
[#:opaque F32Vector f32vector?])
当然,您可以将以上子句合并为一个
require/typed
。旁注:将来,Typed Racket可能还将支持
->*
类型构造函数,该构造函数与用于编写合同的符号(包括rest参数)相匹配。另外,希望我们可以提供typed/ffi/vector
以及其他捆绑的库。