F# で測定単位を使用してベクトルを処理するモジュールを定義したとします。
module Vec
[<Measure>]
type m
type Vector3<[<Measure>] 'a> =
{
X : float<'a>
Y : float<'a>
Z : float<'a>
}
let
を保持して変数を作成したいと思いますVector3
。私は次のようなことができます:
let my_var : Vector3<m> = {X = 1.0<m> ; Y = 1.0<m> ; Z = 1.0<m>};
上記のような多くの割り当てを行う必要があるため、以前の構文を単純化する方法はありますか? 何かのようなもの:
let my_var : Vector3<m> = { 1.0,1.0,1.0} //this don't compile
let my_var : Vector3<m> = {1.0<m> ; 1.0<m> ; 1.0<m>} //this don't compile either
をお願いします:
- 単位指定(
1.0<m>
)を避けたいのですが可能ですか?m
宣言から暗黙のうちに導出 できませんmy_var : Vector3<m>
か? - レコード フィールド名の使用は避けてください (2 番目の例のように)。レコードのフィールド名は、順序に基づいてコンパイラ自体で導出できませんか?