1

統計モデルの場合、測定単位を一貫して使用したい場合は、持っているデータの数をどこかにエンコードする必要があります。

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>  = ...

しかし、サイズの異なる不明な数のデータセットをマージできるようにしたいと考えています。そのような関数を定義するにはどうすればよいですか?

シーケンスは 1 種類しかないため、単純な方法は失敗するため、サイズを静的に定義する必要があります。

    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

または、特定のルールを追加するだけで、データのサイズを気にする必要はありません。これは、アプリカティブ コードにカスタム ディメンション管理を追加することを意味しますが、これも汚いです..そして、そもそもクリーンなディメンションを持つという点を台無しにします!

4

1 に答える 1

1

測定単位の使用を拡大していると思います。私の経験では、それらは物理学や同様のもの(おそらく金融)でうまく機能しますが、それだけです。静的コンテナーのサイズ (n 行 m 列の行列など) を処理できるとは思えません。

依存型システムとF*について聞いたことがありますか? 仕事に合うかもしれないことを示す固定サイズのリストの例を見てきました。これはまだマイクロソフトの研究プロジェクトであり、商用利用には適していない可能性があります。

于 2012-07-04T21:55:39.613 に答える