度量单位的严重用例之一是矩阵运算:矩阵 a*b 与 c*d 的内积仅在 b = c 时有效,等等......
但是,我没有看到任何“复合单元”的构造,例如所需的构造。
我们有什么方法可以让 F# 中的类型系统检查它吗?
度量单位的严重用例之一是矩阵运算:矩阵 a*b 与 c*d 的内积仅在 b = c 时有效,等等......
但是,我没有看到任何“复合单元”的构造,例如所需的构造。
我们有什么方法可以让 F# 中的类型系统检查它吗?
免责声明:从手机发送 => 可能包含错误
我想说这种检查可以使用 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>
然而问题是:使用起来有多方便......