2

度量单位的严重用例之一是矩阵运算:矩阵 a*b 与 c*d 的内积仅在 b = c 时有效,等等......

但是,我没有看到任何“复合单元”的构造,例如所需的构造。

我们有什么方法可以让 F# 中的类型系统检查它吗?

4

1 回答 1

4

免责声明:从手机发送 => 可能包含错误

我想说这种检查可以使用 UoM 或幻像类型以某种方式实现:

[<Measure>] type s
type M<[<Measure>]'w, [<Measure>] 'h>() = 
    static member (*) (a : M<'a, 't>, b : M<'t, 'b>) : M<'a, 'b> = failwith "NYI"
let x = M<s ^ 3, s ^ 3>()
let y = M<s ^ 3, s>()
let z  = x * y // M<s ^ 3, s> 

然而问题是:使用起来有多方便......

于 2012-06-30T22:20:37.360 回答