> // ppm(parts per million)
[<Measure>]
type ppm
// 不良率(ppm)の計算 不良数 * 1000000 / 製造数
// 単位をつけるときは LanguagePrimitives モジュールの関数を使用する
let calcPpm manufacture defective =
LanguagePrimitives.FloatWithMeasure<ppm> (float defective * 1000000. / float manufacture)
;;
[<Measure>]
type ppm
val calcPpm : int -> int -> float<ppm>
> // 500万台生産したけど、12万台の不良品があった
calcPpm 5000000 120000
|> printfn "不良率 : %A";;
不良率 : 24000.0
val it : unit = ()
> // 実行時には単位が失われるため、明示的に記述しなくてはならない
calcPpm 5000000 120000
|> printfn "不良率 : %A ppm";;
不良率 : 24000.0 ppm
val it : unit = ()
>