是否可以在F#PowerPack矩阵库上创建一个包装器来创建强类型矩阵和向量?
我的意思是我想将矩阵/向量的维数存储在类型本身中,以便我可以说
创建一个函数mul,将2个矩阵与签名相乘:
mul :: Matrix<float, n, m> -> Matrix<float, m, p> -> Matrix<float, n, p>
其中Matrix
类型的后两个参数表示行数和列数,且为int
s。
答案 0 :(得分:2)
这里的问题是n
和m
是整数的值,而类型参数必须是类型。
一种有点苛刻的解决方案是使用高度和宽度的度量类型。然后它可能变成:
mull :: Matrix<float<(H^m)*(W^n)>> -> Matrix<float<H^m*W^p>> -> Matrix<float<H^n,W^p>>
其中H
和W
是分别包含高度和宽度的度量类型
[<Measure>] type H
[<Measure>] type W