F#:如何定义将 2 个浮点数相加的函数?在函数签名中指定 "Float"?

F#: how to define a function to add up 2 floats? Specify "Float" in function signature?

没有类型说明,F# 函数定义似乎只接收 int 类型。我不想使用泛型编程,只想声明一个函数来接收 2 个浮点类型,将它们加在一起:

> let g a b=a+b;;

val g : a:int -> b:int -> int

如何更改我的声明?谢谢

您可以将类型注释添加到结果或参数以将推断类型更改为 float

let f1 x y : float = x + y
let f2 (x: float) y = x + y

val f1 : x:float -> y:float -> float
val f2 : x:float -> y:float -> float

或者您可以使用 inline function

let inline f x y = x + y

val inline f :
  x: ^a -> y: ^b ->  ^c
    when ( ^a or  ^b) : (static member ( + ) :  ^a *  ^b ->  ^c)

如您所见,内联函数适用于任何具有 + 运算符

的类型
f 1 2
f 1.4 1.2
f "foo" "bar"