对于统计模型,如果我想始终如一地使用度量单位,我需要在某处编码我拥有的数据数量。
type DataSet<[<Measure>] 'x, [<Measure>] 'y, [<Measure>] 'n> =
DataSet of Matrixu<'n,'x> * Vectoru<'n,'y>
然后我可以定义一个合并 2 个数据集的函数
static member (+) (a:DataSet<'x,'y,'n1>,b:DataSet<'x,'y,'n2>):DataSet<'x,'y,n> = ...
但我希望能够合并未知数量的不同大小的数据集。如何定义这样的功能?
天真的方法失败了,因为序列只有一种,所以我需要静态定义大小。
static member merge (ar:DataSet<'x,'y, ??? > seq) : DataSet<'x,'y, 'n> =
if seq.empty, etc...
let head = ar |> Seq.head
let others = ar |> Seq.skip 1
others |> Seq.fold (fun st el -> st + el) head
或者我应该只添加特定的规则而不考虑数据的大小。这意味着在应用程序代码中添加自定义维度管理,这也很脏......并且首先破坏了拥有干净维度的点!