Это один из способов создания общей функции mean
.
Сначала создайте более общее divideByInt
:
type Helper = Helper of int with
static member (&/)(Helper b, a) = a / b
static member (&/)(Helper b, a) = a / (float b)
static member (&/)(Helper b, a) = a / (decimal b)
let inline divideByInt a b = Helper b &/ a
Эта версия divideByInt
работает с float
, decimal
и int
.
Затем используйте его так же, как в исходном решении:
let inline mean x =
let length = x |> Seq.length
let sum = x |> Seq.sum
divideByInt sum length
и протестируйте его следующим образом:
mean [5. ; 3.] |> printfn "%A" // 4.0
mean [5 ; 3 ] |> printfn "%A" // 4