make function work with all numeric types (int, float, long)

f#

Solution

Use inline:

let inline sum a b = a + b

UPDATE:

If you're interested in writing your own polymorphic numerical functions, you should use both inline and LanguagePrimitives module.

Here is a polymorphic cosine function from the thread Converting Haskell Polymorphic Cosine function to F#:

let inline cosine n (x: ^a) = 
    let one: ^a = LanguagePrimitives.GenericOne
    Seq.initInfinite(fun i -> LanguagePrimitives.DivideByInt (- x*x) ((2*i+1)*(2*i+2)))
    |> Seq.scan (*) one
    |> Seq.take n
    |> Seq.sum

Problem

this simple function: ``` let sum a b = a + b ``` will work only for int types how to make it so that it would also work for float and long ?

Original source

Related problems