この質問に従って: F#の測定単位の分数乗数 F# の測定単位でサポートされている分数乗数はありません。
私のアプリケーションでは、たとえば秒を扱う場合など、データにメトリック プレフィックスを付けると便利です。ミリ秒単位の結果が必要な場合もあれば、秒単位の結果が必要な場合もあります。
私が現在使用を考えている代替手段はこれです
[<Measure>] type milli
[<Measure>] type second
let a = 10.0<second>;
let b = 10.0<milli*second>
それは私に与える:
val a : float<second> = 10.0
val b : float<milli second> = 10.0
ここで、2 つの操作で計算できるようにします。だから私はできる
let milliSecondsPerSecond = 1000.0<(milli*second)/second>
let a = 10.0<second>;
let b = 10.0<milli*second>
(a*milliSecondsPerSecond) + b
それはまさに私が欲しかったものを私に与えます
val it : float<milli second> = 10010.0
現在、これはすべて素晴らしいですが、複数のユニットと複数のプレフィックスをサポートしたい場合はすぐに手に負えなくなります。したがって、これをより一般的なソリューションに焼き付ける必要があると思いますが、どこから始めればよいかわかりません。私は試した
let milliPer<'a> = 1000.0<(milli * 'a) / 'a>
しかし、それは機能しません。なぜなら、f# が不平を言い、「ゼロ以外の定数は一般的な単位を持つことはできません」と言うからです...
単位接頭辞はよくある問題だと思うので、誰かが以前にこの問題を解決したと思います。F# でユニット プレフィックスを行うより慣用的な方法はありますか?