2

測定単位の重要な使用例の 1 つは行列演算です。行列 a*b と c*d の内積は、b = c などの場合にのみ有効です。

ただし、必要になるような「複合ユニット」の構成は見当たりません。

これを F# の型システムでチェックする方法はありますか?

4

1 に答える 1

4

免責事項: 電話から送信 => エラーが含まれている可能性があります

このチェックは、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> 

ただし、問題は次のとおりです。使用するのがどれほど便利でしょうか...

于 2012-06-30T22:20:37.360 に答える