这个简单的功能:
let sum a b = a + b
Run Code Online (Sandbox Code Playgroud)
将仅适用于int类型
如何使它也适用于漂浮和长时间?
使用内联:
let inline sum a b = a + b
Run Code Online (Sandbox Code Playgroud)
更新:
如果您对编写自己的多态数值函数感兴趣,则应使用inline和LanguagePrimitives模块.
这是从转换Haskell Polymorphic余弦函数到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
Run Code Online (Sandbox Code Playgroud)