F#中的强类型矩阵

时间:2014-03-07 14:21:59

标签: matrix f#

是否可以在F#PowerPack矩阵库上创建一个包装器来创建强类型矩阵和向量?

我的意思是我想将矩阵/向量的维数存储在类型本身中,以便我可以说

创建一个函数mul,将2个矩阵与签名相乘:

mul :: Matrix<float, n, m> -> Matrix<float, m, p> -> Matrix<float, n, p>

其中Matrix类型的后两个参数表示行数和列数,且为int s。

1 个答案:

答案 0 :(得分:2)

这里的问题是nm是整数的值,而类型参数必须是类型。

一种有点苛刻的解决方案是使用高度和宽度的度量类型。然后它可能变成:

mull :: Matrix<float<(H^m)*(W^n)>> -> Matrix<float<H^m*W^p>> -> Matrix<float<H^n,W^p>>

其中HW是分别包含高度和宽度的度量类型

[<Measure>] type H
[<Measure>] type W